[ BOJ / Python ] 14382번 숫자세는 양(Large)

황승환·2021년 12월 11일
0

Python

목록 보기
43/498

이번 문제는 입력받은 숫자들을 문자열로 처리하여 해결하였다. N, 2N, 3N, ... 순으로 수가 증가하는 것은 반복 전에 tmp변수에 해당 수를 저장하고 매 반복 사이클마다 cnt변수를 증가시키며 곱하도록 하여 구현하였다.

  • 케이스의 개수 t를 입력받는다.
  • 수들을 저장할 answer배열을 선언한다.
  • 0부터 t까지의 i에 대한 for문을 돌린다.
    -> answer에 수들을 담는다.
  • 0부터 t까지의 i에 대한 for문을 돌린다.
    -> 만약 answer[i]가 0이라면 이는 영원히 잠들 수 없는 경우이므로 continue를 통해 사이클을 다음으로 넘긴다.
    -> answer[i]가 0이 아니라면,
    -> tmp에 answer[i]를 저장한다.
    -> 수들을 기록할 blt배열을 선언한다.
    -> 매 사이클마다 answer를 변경시킬 때에 사용할 cnt변수를 1로 정의한다.
    -> blt의 길이가 10보다 작을 동안 반복되는 while문을 돌린다.
    --> answer[i]를 tmp*cnt로 초기화한다.
    --> answer[i]를 문자열로 변환하여 0부터 answer[i]의 길이까지 반복되는 j에 대한 for문을 돌린다.
    ---> 만약 answer[i]의 [j]가 blt에 없다면 이를 넣어준다.
    --> cnt를 1 증가시킨다.
  • 0부터 t까지의 i에 대한 for문을 돌린다.
    -> 만약 answer[i]가 0이라면 'Case #(i+1): INSOMNIA'를 출력한다.
    -> answer[i]가 0이 아니라면 'Case #(i+1): answer[i]'를 출력한다.

Code

t=int(input())
answer=[]
for i in range(t):
    answer.append(int(input()))
for i in range(t):
    if answer[i]==0:
        continue
    else:
        tmp=answer[i]
        blt=[]
        cnt=1
        while len(blt)<10:
            answer[i]=tmp*cnt
            for j in range(len(str(answer[i]))):
                if str(answer[i])[j] not in blt:
                    blt.append(str(answer[i])[j])
            cnt+=1
for i in range(t):
    if answer[i]==0:
        print('Case #%d: INSOMNIA'%(i+1))
    else:
        print('Case #%d: %d'%(i+1, answer[i]))

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글