
https://build.tistory.com/manage/newpost/?type=post&returnURL=%2Fmanage%2Fposts%2F
문제 전문은 링크 참조
문제가공
- 숫자N을 입력받는다.
- 12345…처럼 나열된 숫자에서 숫자N이 처음나오는 위치를 출력한다.
코드작성
숫자를 이어나가면서 원하는 숫자를 찾게 되면 값이 커질수록 찾는 속도도 느려지고 이미 찾은 구간을 다시 반복하는 비효율적인 작업이 발생된다.
앞에서 이미 검증한 숫자들은 삭제하고 자리수만 기억하자.
N = input()
s=''
idx = 0
i =1
while True:
s+=str(i)
if N in s:
idx +=s.find(N)
break
if len(s)> len(N)*2: #이미 검증이 끝난 이전 숫자데이터 삭제
s = s[len(N):]
idx += len(N)
i+=1
print(idx+1)
리뷰
다른 통과 코드를 보니,
join()과 range()함수로 숫자를 나열하고 str.find()로 찾는게 훨씬 효율적이였다.
'Python > 백준 (BOJ)' 카테고리의 다른 글
| [BOJ][B2]도비의 영어 공부 - 2386 (0) | 2025.08.25 |
|---|---|
| [BOJ][B2]시그마 - 2355 (2) | 2025.08.24 |
| [BOJ][B2]소수단어 - 2153 (0) | 2025.08.22 |
| [BOJ][B2]숫자 놀이 - 2145 (0) | 2025.08.21 |
| [BOJ][B2]나는 너가 살아온 날을 알고 있다 - 2139 (0) | 2025.08.20 |