1436번: 영화감독 숌

666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타

www.acmicpc.net


def nth_number(n):
  order = 0
  for i in range(666, 2147483647):
    cnt = 0
    for c in list(str(i)):
      cnt = cnt + 1 if c == '6' else 0
      if cnt == 3:
        order += 1
        break
    if order == n: return i

n = int(input())
print(nth_number(n))

그냥 무식하게 666부터 시작해서 종말 숫자들을 계속 하나씩 세는 함수다.

파이썬은 정수 범위가 무제한이라 마지막 숫자를 어떻게 할까 하다가 그냥 c언어 int 최대값으로 잡았는데 그냥 order랑 n이랑 같아지면 탈출하는 반복문으로 작성하는 게 훨씬 나을 것 같다. 

그리고 for문 하나 더 돌려서 6이 연속으로 3개 있는지 확인하지 말고 파이썬 in 연산을 활용해서 풀자.

def nth_number(n):
  order = 0
  start = 666
  while order != n:
    if "666" in str(start):
      order += 1
    start += 1
  return start - 1

n = int(input())
print(nth_number(n))

 

복사했습니다!