알고리즘 분류 브루트포스
📎 문제 출처 https://www.acmicpc.net/problem/1436
n = int(input())
i = 0
iter_num = 0
while i != n:
iter_num += 1
if '666' in str(iter_num):
i += 1
print(iter_num)
해결 방법을 고민하기 전에 문제에 대한 이해를 하는데 시간이 오래 걸렸었다. 666,1666,2666,3666,,,,이런 식으로 흘러가는 것은 이해했다. 그렇다면 문제에서 등장한 예시인 66666은 66번째 영화 제목이 아닌가 한참을 고민했다. 즉, 5666 다음은 6666이라고 생각했던 것이다. 하지만 5666과 6666사이에는 666을 포함하고 있는 다른 수들이 존재한다.
즉, 666을 포함하는 수들을 크기대로 정렬하면 되는 문제였던 것이다.
즉, 5666다음은 6660이 되는 것이다.
사실 이 문제는 문제를 이해하는 것이 더 큰 몫이었다고 생각한다.
while루프를 입력받은 n과 i가 같아질때까지 증가연산을 하며 돌려준다. iter_num는 매 루프마다 1씩 증가하며 답을 찾을 때까지의 모든 경우의 수를 순회한다.(브루트포스 특징)
만약 i와 n이 같다면 while문을 빠져나와 저장된 iter_num을 출력해준다.