모든 숫자를 돌며 '666'이 들어갈 때마다 카운트하여 그 값이 입력값과 일치할 때의 숫자 n 출력
알고리즘: Brute Force
import sys
n = int(sys.stdin.readline())
num = 666
while n: # 입력 n값이 0이될 때까지
if "666" in str(num):
n -= 1
num += 1
print(num - 1) # 마지막 카운트가 감소한 후 num이 1 증가하여 - 1처리
이 문제의 함정은 5666 다음에 카운트 될 숫자가 6666이 아닌 6660, 6661, ..., 6665라는 점이다
처음 예제에서 500의 결과가 166699인 것을 보고 음? 하고 이 부분을 확인할 수 있었다
다만 나는 이 숫자들이 나타나는 규칙을 더 세세하게 나눌 수 없어서
666부터 카운트에 도달할 때까지 숫자를 1씩 증가하며 모든 숫자를 순회하기로 결정했다
근데 포스팅하며 생각해보니
import sys
n = int(sys.stdin.readline())
num = 665
while n:
num += 1
if "666" in str(num):
n -= 1
print(num)
이 코드가 더 깔끔한 것 같다
오늘 문제는 중간 함정만 잘 파악하면 그리 어렵지 않았던 문제였다
사실 지금 하고 있는 스터디에서 이번주에 원래 풀기로 했던 문제가 너무 어려워가지고,,
그냥 다른 좀 더 낮은 레벨의 문제를 풀어보었다..
한 3~4일 뇌풀기식으로 더 하위 문제를 좀 풀고 다시 도전해야겠다
알고리즘,, 언제 쉬워질까..?