백준 1436 영화감독 숌 python

hyewon9913·2023년 11월 30일

코딩테스트(python)

목록 보기
9/46
n = int(input())

cnt = 0
ans = 0
x = 666

while(cnt<n):
    tmp = x
    isEnd = False

    #해당 숫자의 종말의  판별
    while(tmp>=666):
        if tmp % 1000 == 666:
            isEnd=True
        tmp //=10
    #종말의 수라면 cnt 더하고 ans에 넣어주기
    if isEnd:
        cnt+=1
        ans=x
        
    x+=1

print(ans)

문제 해결을 위해 접근한 방식은 일단 cnt라는 변수를 설정해 n개의 종말의 수를 구할 때까지 while문을 반복하고 해당 숫자가 종말의 수 여부를 판독하기 위해 해당 숫자를 666이상일 동안 10으로 나누고
1000으로 나눈 나머지가 666이 되면 종말의 숫자이므로 cnt에 더해주고 ans에도 넣어 주었다

처음에는 6660 은 종말의 숫자로 판독하지만 6661, 6662 등은 종말의 수로 판단하지 않는 오류가 발생했는데
이는 tmp//=10 이부분을 tmp/=10 으로 했었기 때문이다.
이렇게 되면 10으로 나누어 떨어지지 않는 경우에는 자연수가 아니게 된다.

profile
차근차근 굴러가는 코딩일지

0개의 댓글