[백준 BOJ_1436] 영화감독 숌 Python 풀이
출처: 백준 온라인 저지
문제
풀이
단순히 처음에 문제를 보았을때 예시로 666이 제일 작은 숫자이며 그 다음으로는 1666, 2666, 3666 … 이라 하기 때문에 그다지 어려운 문제로는 보이지 않지만, 이 문제에서는 패턴을 벗어나는 예외의 값을 찾아내는 것이 중요하다고 생각합니다.
3666 다음으로 4666, 5666 까지는 눈에 보이는 패턴으로 666의 앞의 숫자만 늘려주면 된다고 생각될 수도 있습니다. 하지만, 5666의 다음 숫자는 6666이 아닌 6660입니다. 그 뒤로 6661, 6662, … 6669까지 세준 뒤 7666으로 넘어가게 되기 때문에 숫자로 보는 것보다 하나의 string으로 보는 것이 문제를 쉽게 해줍니다.
시작 숫자를 666으로 잡아준 뒤 string으로 캐스팅을 해준 뒤 숫자가 “666”을 포함하는지 찾아줍니다. 포함할 경우 cnt의 수를 늘려준 다음, cnt가 N과 같을 때 while loop을 break해줍니다. break 되었을 때의 숫자가 N번째 종말의 숫자가 됩니다.
코드
N = int(input())
cnt = 0
start = 666
while(1):
start_str = str(start)
for i in range(len(start_str)-2):
if start_str[i:i+3] == "666":
cnt += 1
break
if cnt == N:
break
start += 1
print(start)
Leave a comment