백준

백준 1436번 <영화감독 숀> [파이썬]

덴마크 당나귀 2022. 7. 27. 01:59
728x90

https://www.acmicpc.net/problem/1436

 

1436번: 영화감독 숌

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

www.acmicpc.net

 

 

영화감독 숌 

문제

666은 종말을 나타내는 숫자라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워즈를 만들 때, 스타워즈 1, 스타워즈 2, 스타워즈 3, 스타워즈 4, 스타워즈 5, 스타워즈 6과 같이 이름을 지었고, 피터 잭슨은 반지의 제왕을 만들 때, 반지의 제왕 1, 반지의 제왕 2, 반지의 제왕 3과 같이 영화 제목을 지었다.

하지만 숌은 자신이 조지 루카스와 피터 잭슨을 뛰어넘는다는 것을 보여주기 위해서 영화 제목을 좀 다르게 만들기로 했다.

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

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

숌이 만든 N번째 영화의 제목에 들어간 숫자를 출력하는 프로그램을 작성하시오. 숌은 이 시리즈를 항상 차례대로 만들고, 다른 영화는 만들지 않는다.

입력

첫째 줄에 숫자 N이 주어진다. N은 10,000보다 작거나 같은 자연수이다.

출력

첫째 줄에 N번째 영화의 제목에 들어간 수를 출력한다.

1 -> 666

2-> 1666

이런식으로 나오는 건데 참고해야 될 것 은 666이 연속으로 나오기만 하면 되는 것이므로 6660,6661이런

수들을 고려해 줘야 한다는 점이다.

이 문제를 보고 어떻게 해야될지 고민하다 내린 맨 처음 혼자 고안해서 나온 결론은 이 알고리즘이다.

n = int(input())
cnt = 0
num = 666
while True:
    temp = num
    e = 0
    while 1:
        t = temp % 10
        if t == 6:
            e += 1
        else:
            e = 0
        if e == 3:
            cnt += 1
            break
        elif temp == 0:
            break
        temp = temp // 10
    if cnt == n:
        print(num)
        break
    num += 1

22줄의 알고리즘인데 설명해보면, 첫 수를 666으로 한 뒤 수를 1개씩 더해주며 수를 찾아가는 식이다. 그래서

입력된 값 만큼의 cnt가 쌓이면 break를 걸어서 그 값을 출력해내는 방식인데, 수를 일의 자리부터 연속적으로

666이 나오는지 찾는 알고리즘이라고 보면 된다.

 문제를 보고 한번에 확 와닿지는 않았지만, 그래도 해결하려고 노력해봤는데, 다행히 문제가 풀리긴 했다.

그러나 다른 사람의 풀이를 보고 좀 좌절? 이라고 해야되나 그런걸 느꼈다.

N = int(input())
first = 666
while N != 0:
    if '666' in str(first): 
        N = N-1
        if N == 0:
            break
    first = first 

단 10줄도 안되는 코드를 보고 심란해졌다.

확실히 아직 파이썬에 대한 기본이 부족한 것을 느꼈다.

문제는 계속 풀면서 내가 부족한 부분을 채워나갈 것이다!

그렇지만, 이런식으로 문제마다 얻어가는 것도 중요하겠지만, 추가적으로 기본에 대해서 한번 더 잡고 채득하는

시간이 필요하다고 생각했다. 

하면 는다. 안하면 안는다. 그냥 하면 된다. 긍정적으로!

 

728x90