본문 바로가기
코딩테스트/백준 알고리즘 풀이

[백준 알고리즘/python] 백준 1436번 영화감독 숌, 파이썬 설명

by Godgil 2020. 9. 27.

이번 문제는 백준 알고리즘의 브루트포스 단계, 1436번 영화감독 숌이다.

내가 풀면서 생각했던대로, 설명을 해 보려 한다.

 

문제 출처

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

 

1436번: 영화감독 숌

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

www.acmicpc.net

 

먼저, 브루트포스 단계이다. 브루트 포스는 단순히 그냥 가능한 경우의 수를 전부 때려박는 알고리즘이다.

그럼 문제 접근을 어떻게 해야할까?

문제 해석을 먼저 해 보도록 하자.

 

문제 해석

#1. 숌이라는 염화감독은, 영화 제목에다 종말의 숫자인 666을 넣어서, 시리즈를 만들려고 한다.

#2. 숫자 6이 연속으로 3번이상 들어가는 수를 종말의 숫자라고 한다.

#3. 이렇게 N번째 영화의 제목은 세상의 종말 (N번째로 작은 종말의 숫자)로 정해진다.

#4. N이 입력이 되면, N번째 영화 제목에 들어간 수를 출력한다.

 

그러니까 간단하게 정리해 보자면,

첫번째 영화 제목은 세상의 종말 666

두번째 영화 제목은 세상의 종말 1666

이런식으로 정해진다는 의미이다.

 

내 생각

#1. 브루트포스인 만큼, 가능한 경우를 계속 때려 박는 것이 좋다.

#2. 경우의 수는 그냥 숫자를 1씩 늘리면서 666이 포함되면 카운트되고, 아니면 안된다.

#3. 파이썬의 문자열 기능을 이용해서 간단하게 짤 수 있을 것 같다.

 

이정도로 생각하고 바로 코드를 써 내려 갔다.

 

내 코드

N = int(input())
first = 666#처음 666인 수
while N != 0:# N 이 0이 아니면 계속 반복
    if '666' in str(first): # 만약 666이란 문자열이 문자열(first)안에 있으면
        N = N-1# N을 1 감소시키고
        if N == 0:# 만약 N 이 0이면
            break# 반복문을 탈출한다.
    first = first + 1#first의 값을 1 증가시킨다.
print(first)

 

사실 막 어려운 문제는 아니다.

코드도 몇줄 안되게 짧게 나온다.

 

댓글