def nth_number(n):
order = 0
for i in range(666, 2147483647):
cnt = 0
for c in list(str(i)):
cnt = cnt + 1 if c == '6' else 0
if cnt == 3:
order += 1
break
if order == n: return i
n = int(input())
print(nth_number(n))
그냥 무식하게 666부터 시작해서 종말 숫자들을 계속 하나씩 세는 함수다.
파이썬은 정수 범위가 무제한이라 마지막 숫자를 어떻게 할까 하다가 그냥 c언어 int 최대값으로 잡았는데 그냥 order랑 n이랑 같아지면 탈출하는 반복문으로 작성하는 게 훨씬 나을 것 같다.
그리고 for문 하나 더 돌려서 6이 연속으로 3개 있는지 확인하지 말고 파이썬 in 연산을 활용해서 풀자.
def nth_number(n):
order = 0
start = 666
while order != n:
if "666" in str(start):
order += 1
start += 1
return start - 1
n = int(input())
print(nth_number(n))
'알고리즘' 카테고리의 다른 글
[백준] 10989 수 정렬하기 3 - 파이썬 (카운팅 정렬) (0) | 2022.04.05 |
---|---|
[백준] 2751 수 정렬하기 2 - 파이썬 / 퀵 정렬 (0) | 2022.04.05 |
[백준] 1018 체스판 다시 칠하기 - 파이썬 (0) | 2022.04.04 |
[백준] 7568 덩치 - 파이썬 (0) | 2022.04.02 |
[백준] 2231 분해합 - 파이썬 (0) | 2022.04.01 |