처음 작성한 코드
처음에 숫자를 while 문에서 계속 +1 해주고
idx를 설정해서 n번째가 나오면 break를 해주는 코드를 작성했다.
n = int(input())
i = 0
num = 665
while True:
num += 1
s_num = str(num)
i += 1
if '666' in s_num and i == n:
print(s_num)
break
근데 이렇게 하니까 무한 루프에 걸려서 동작을 제대로 안한다. 코드를 보면 검사할 필요가 없는 idx 번호까지 즉, 종말의 숫자가 아닌 것까지 카운트를 하기 때문에 잘못된 구현이기 때문이다.
최종코드
n = int(input())
i = 0
num = 665
while True:
num += 1
s_num = str(num)
i += 1
if '666' in s_num:
i += 1
if i == n:
print(s_num)
break
최종코드에서는 '666' 확인 조건문과 idx 조건문을 따로 걸어주었다.
N번째로 작은 종말의 숫자를 카운팅하는 문제니까, if 종말의 숫자일 때 idx += 1를 해줘야 문제에서 요구하는 것에 맞는 코드다.
'PS > BOJ&Programmers' 카테고리의 다른 글
[백준/2309] 일곱 난쟁이 | sorted()를 반복문의 대상으로 (0) | 2023.01.25 |
---|---|
[백준/10809] 알파벳 찾기 | find() 찾고자 하는 문자의 인덱스를 반환 (0) | 2023.01.22 |
[백준/4949] 균형잡힌 세상 ( 파이썬 ) (0) | 2023.01.21 |
[백준/1181] 단어 정렬 (파이썬) (0) | 2023.01.18 |
[백준/14592] 2017 아주대학교 프로그래밍 경시대회(small) - 파이썬 (2) | 2023.01.18 |