본문 바로가기
백준

[백준]1436. 영화감독 숌 문제풀이 (파이썬, python)

by 장인이 2021. 2. 17.

www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

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

www.acmicpc.net

 위 문제가 요구하는 점을 요약해보면,

1. 666이 들어가는 수를 순서대로 나열한다.

2. 숫자 N를 입력받고, N번째 666이 들어가는 수를 출력하라.

ex) 수 순서는 666, 1666, 2666, 3666, 4666, 5666, 6660, 6661, ...

1. 문제 해결 방법

 필자는 우선 경우의 수를 나누어 문제를 해결하고자 하였다. 우선 뒤에 세자리를 제외시킨 후, 앞에 붙는 숫자가

1. 뒤 세자리가 6인지

2. 뒤 두자리가 6인지

3. 뒤 한자리가 6인지

 이 조건을 통해 문제가 요구하는 수의 순서를 계산하고자 하였다. 이렇게 코딩한 결과, 테스트 케이스를 비롯한 몇 가지 상황에서는 알맞는 결과가 나왔으나, 반례가 더 있는 듯 하여 문제 해결에 실패하였다.

 

 결국 구글링을 해본 결과, 666에서 1씩 더하고, 그 값에 '666'이 포함되어있다면 횟수를 1 올리는 방법으로 생각할 시, 프로그램에 좀 무거워질 수 있으나, 짧게 해결할 수 있다는 것을 깨달았다.

 때로는 조금 무거워 지더라도 간단하게 생각하는 것이, 오히려 짧고 직관적인 코드로 문제를 해결할 수 있다는 사실을 알게 된 것 같다.

 

2. 정답 코드

n = int(input())
cnt = 0
six_n = 666
while True:
    if '666' in str(six_n):
        cnt += 1
    if cnt == n:
        print(six_n)
        break
    six_n += 1

댓글