이번 문제는 백준 알고리즘의 브루트포스 단계, 1436번 영화감독 숌이다.
내가 풀면서 생각했던대로, 설명을 해 보려 한다.
문제 출처
https://www.acmicpc.net/problem/1436
먼저, 브루트포스 단계이다. 브루트 포스는 단순히 그냥 가능한 경우의 수를 전부 때려박는 알고리즘이다.
그럼 문제 접근을 어떻게 해야할까?
문제 해석을 먼저 해 보도록 하자.
문제 해석
#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)
사실 막 어려운 문제는 아니다.
코드도 몇줄 안되게 짧게 나온다.
'코딩테스트 > 백준 알고리즘 풀이' 카테고리의 다른 글
[백준 알고리즘/python] 백준 1931번 회의실배정, 파이썬 설명 (0) | 2020.09.27 |
---|---|
[백준 알고리즘/python] 백준 11047번 동전 0, 파이썬 설명 (1) | 2020.09.27 |
[백준 알고리즘/python] 백준 1018번 체스판 다시 칠하기, 파이썬 설명 (2) | 2020.09.13 |
[백준 알고리즘/python] 백준 7568번 덩치, 파이썬 설명 (0) | 2020.09.13 |
[백준 알고리즘/python] 백준 2231번 분해합, 파이썬 (0) | 2020.08.13 |
댓글