영화감독 숌

import sys


def main():
    input = sys.stdin.readline

    n = int(input())
    print(solve(n))


def solve(n: int) -> int:
    number = 0

    for _ in range(n):
        while True:
            number += 1
            if is_end_number(number):
                break

    return number


def is_end_number(n: int) -> bool:
    return "666" in str(n)


main()

$N \le 10\,000$인데, $10\,000$번째 종말의 수는 크게 잡아도 $10\,000\,666$을 넘을 수 없습니다. 또한 종말의 수인지 판별하는 함수 is_end_number는 상수 시간에 동작하므로, 브루트 포스를 이용하여 0부터 $N$번째 종말의 수까지 모든 수를 검사해 봐도 시간제한 내에 해결할 수 있습니다.

댓글