[백준] 2312번 수 복원하기

거북이·2023년 1월 21일
0

백준[실버3]

목록 보기
44/92
post-thumbnail

💡문제접근

  • 미리 만들어진 딕셔너리를 이용해서 제출했는데 계속 Keyerror가 출력되어 도대체 어떤 부분이 문제인지 잘 몰랐다. 구글링을 통해서 Keyerror 발생 이유를 찾아봤는데 딕셔너리에 없는 키를 참조하는 것은 불가능하므로 이런 경우 Keyerror가 발생한다.
  • 딕셔너리를 미리 만들지 않고 횟수별로 카운팅하여 N의 값이 1이 되는 순간 break를 걸고 딕셔너리의 value값이 0이 아닌 값이 나오는 경우 딕셔너리의 key값과 value값을 공백을 두어 출력했더니 AC를 받았다.

💡코드(메모리 : 30616KB, 시간 : 304ms)

T = int(input())
for _ in range(T):
    N = int(input())
    j = 2
    dict = {}

    while True:
        if N == 1:
            break

        if N % j == 0:
            N //= j
            if j not in dict:
                dict[j] = 1
            else:
                dict[j] += 1
        else:
            j += 1

    for i in dict.items():
        if i[1] != 0:
            print(i[0], i[1])

💡소요시간 : 21m

0개의 댓글