알고리즘 풀이/백준

[백준 1436] 영화감독 숌

mhko411 2021. 3. 2. 17:02
728x90

문제

종말의 숫자란 어떤 수에 6이 적어도 3개이상 연속으로 들어가는 수를 말한다. 제일 작은 종말의 숫자는 666이고, 그 다음으로 큰 수는 1666, 2666, 3666, .... 과 같다.

따라서, 숌은 첫 번째 영화의 제목은 세상의 종말 666, 두 번째 영화의 제목은 세상의 종말 1666 이렇게 이름을 지을 것이다. 일반화해서 생각하면, N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 숫자) 와 같다.

숌이 만든 N번째 영화의 제목에 들어간 숫자를 출력하는 프로그램을 작성하시오.

 

입력

첫째 줄에 N이 주어진다.

 

출력

N번째 영화제목을 출력한다.


접근

1탄은 666이고 2탄은 1666이다. 영화제목에는 666이 포함되어 있어야 한다.

처음에 입력된 N에 따라 출력을 만들어보려고 했지만 실패했고 다른 사람들의 풀이를 참고하였는데 완전탐색으로 풀게 되었다.

666이 1탄이기 때문에 666부터 수를 증가시켜 666이 포함되어 있을 때 N을 감소시킨다. 즉 666에서 1666이 되었을 때 N을 감소시키고 이것은 2탄이다. N이 0이 되었을 때, M-1이 N번째 영화의 제목이 된다.

 

구현

N을 입력받고 M을 666으로 초기화한다.

N이 0이 될 때까지 while문을 돌리고 M을 증가시키면서 666이 포함되어있을 때 N을 감소시킨다.

N이 0이 되었을 때 한 번 더 M을 증가시킨 후에 종료되기 때문에 최종 출력은 M-1을 출력한다.

N = int(input())
M = 666
while N:
    if '666' in str(M):
        N -= 1
    M += 1

print(M-1)

 

'알고리즘 풀이 > 백준' 카테고리의 다른 글

[백준 2581] 소수  (0) 2021.03.04
[백준 1463] 1로 만들기  (0) 2021.03.03
[백준 17779] 게리멘더링 2  (0) 2021.02.25
[백준 17144] 미세먼지 안녕!  (0) 2021.02.25
[백준 2947] 나무 조각  (0) 2021.02.24