티스토리 뷰

브루트포스로 풀 걸

 

그래도 생각하는 과정이 할만했던 것 같다...

 

top을 정의해서 top이 6, 16, 26 처럼 6이 한개이면 last6 = 1, 66, 266처럼 6이 2개이면 last6 = 2.. 이런식으로 커지고

top6가 1이라면 안에서 10번 loop를 돌아서 {top}66{i} 를 프린트 해준다. 6660부터 6669까지 프린트 할 수 있는 이유이다.

마찬가지로 top6가 2이라면 안에서 100번 loop를 돌아서 {top}6{i} 를 프린트 해준다. 66600부터 66699까지 프린트 할 수 있는 이유이다.

이런식으로 top6가 5일때까지 구해줬다. 

 

import sys
N = int(sys.stdin.readline())

count = 1
top = 0
last6 = 0

while count < N:
    last6 = 0
    top += 1
    count += 1

    # 6이면 last6: 1, 66이면 last6:2, ...
    for t in range(len(str(top))):
        if int(''.join(reversed(str(top)))[t]) == 6:
            last6 += 1
        else:
            break

    if last6 == 1:
        for i in range(10):
            if count == N:
                print(f"{top}66{i:0>1}")
                exit(0)
            else:
                if i != 9:
                    count += 1
    elif last6 == 2:
        for i in range(100):
            if count == N:
                print(f"{top}6{i:0>2}")
                exit(0)
            else:
                if i != 99:
                    count += 1
    elif last6 == 3:
        for i in range(1000):
            if count == N:
                print(f"{top}{i:0>3}")
                exit(0)
            else:
                if i != 999:
                    count += 1
    elif last6 == 4:
        for i in range(10000):
            if count == N:
                print(f"{top}{i:0>4}")
                exit(0)
            else:
                if i != 9999:
                    count += 1
    elif last6 == 5:
        for i in range(100000):
            if count == N:
                print(f"{top}{i:0>5}")
                exit(0)
            else:
                if i != 99999:
                    count += 1
if top != 0:
    print(f"{top}666")
else:
    print("666")

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
글 보관함