본문 바로가기
👩🏻‍💻 Front-end/👾 Algorithm

백준 1436 - 영화감독 숌 (Python)

by su-no 2022. 5. 17.

코드

n = int(input())

i = 666 #1
cnt = 0

while(True):
    if i//10 == 666 or i//100 == 666 or i//1000 == 666 or i//10000 == 666 or i % 1000 == 666 or i//10 % 1000 == 666 or i//100 % 1000 == 666 or i//1000 % 1000 == 666:
        cnt += 1 #2
    if cnt == n:
    	print(i)
        break #3
    i += 1

 

풀이

#1: 666이 연속으로 들어가는 수의 최소값은 666이므로, i=666부터 반복문을 시작한다.

#2: n의 최댓값은 10,000이고, 예제에서 n:500일 때 cnt:166699가 되므로,, 대략적으로 i가 1000000 이내라고 판단한다.

      그리고 666이 연속으로 들어가는 수의 조건들을 만족했을 때, cnt를 1씩 더해준다.

#3: cnt가 n과 동일해지면, i를 출력하고 반복문을 탈출한다.

 

추가코드 (str 사용)

n = int(input())

series_num = 666
cnt = 0

while True:
    if '666' in str(series_num):
        cnt += 1
    if cnt == n:
        print(series_num)
        break
    series_num += 1