728x90
반응형
- 문제
- 잘못된 풀이
N = int(input())
num_list = list()
num_list.append(666)
for i in range(1, 10001):
num = str(i) + str(666)
num_list.append(int(num))
num = str(666) + str(i)
num_list.append(int(num))
num_list.sort()
print(num_list[N-1])
666을 기준으로 앞 뒤에 숫자를 붙여서 .sort()한다면 문제를 해결할 수 있을 것이라고 생각했다.
- 올바른 풀이
N = int(input())
cnt = 0
num = 1
while True:
if '666' in str(num):
cnt+=1
if cnt==N:
print(num)
break
num+=1
짧은 설명만을 읽고 문제를 이해하기로는 설명이 조금 부족했던 것 같다.
해당 문제는 숫자를 하나씩 올리면서 666이 들어있을 때를 count하여, 입력한 인덱스 값의 숫자를 찾는 문제이다.
즉, 1666, 2666, 3666 ... 6666 이 아니라 6660이 먼저나와야 한다.
위의 잘못 설계한 알고리즘은 0도 포함되지 않을 뿐더러 6666이 두 번 나오는 구조이다.
728x90
'자료구조 및 알고리즘 > 백준' 카테고리의 다른 글
[python] 1065. 한수 (0) | 2023.07.28 |
---|---|
[python] 4673. 셀프 넘버 (0) | 2023.07.27 |
[python] 19532. 수학은 비대면강의입니다. (0) | 2023.07.26 |
[python] 2231. 분해합 (0) | 2023.07.25 |
[python] 2798. 블랙잭 (0) | 2023.07.25 |