[Python] 백준 알고리즘 온라인 저지 1436번 영화감독 숌
https://www.acmicpc.net/problem/1436
처음에는 단순히 n-1을 앞에 붙이는 문제라고 생각하고 쉽다고 생각했다.😓 일단 문제를 풀기 위해서는 666이라는 숫자를 포함한 n번째로 작은 수를 찾는 것이라는 걸 이해해야 한다.
ex) 첫 번째로 작은 666을 포함하는 수 = 666, 두 번째 = 1666, 300번째 = 110666
코드
n = int(input())
apocalypse = 666
cnt = 0
while True:
if '666' in str(apocalypse):
cnt += 1
if cnt == n:
print(apocalypse)
break
apocalypse += 1
의사코드
1. 입력 값(n)을 받고 가장 작은 666으로부터 시작할 수 있도록 선언
2. 몇번째로 666을 가지고 있는지 세기 위한 cnt 선언
3. 브루트 포스를 이용하여 666부터 1씩 커지는 while문 작성
4. 조건문으로 while문을 빠져나올수 있도록 n과 cnt의 값이 같으면 break
풀이
브루트 포스를 이용하여 666부터 1씩 더하여 666이라는 수를 포함하고 있다면 cnt를 1씩 올리는 문제였다.
코드에 작성되어 있듯이 <if '666' in str(apocalypse):> 이와 같은 if문을 활용할 수 있다는 점을 이 문제를 통해 알게 되었다. 종말 수를 하나씩 올리며 cnt와 n이 같을 때의 appocalypse를 출력하고 while문을 빠져나온다.
풀이 결과
'알고리즘' 카테고리의 다른 글
백준 2751번 수 정렬하기 2 파이썬 풀이 (0) | 2022.01.16 |
---|---|
백준 2750번 수 정렬하기 파이썬 풀이 (0) | 2022.01.15 |
백준 1018번 체스판 다시 칠하기 파이썬 풀이 (0) | 2022.01.13 |
백준 7568번 덩치 파이썬 풀이 (0) | 2022.01.10 |
백준 2231번 분해합 파이썬 풀이 (0) | 2022.01.09 |