DHistory

[Baekjoon] Greedy - 2777 숫자 놀이 (오답노트) 본문

Computer Science/Algorithm

[Baekjoon] Greedy - 2777 숫자 놀이 (오답노트)

ddu0422 2023. 8. 28. 21:20

문제

 

2777번: 숫자 놀이

첫 번째 줄에 Test case의 수 T가 주어진다. 그리고 각각의 케이스마다 입력으로 첫 번째 줄에 양의 정수 N이 주어진다. (1 <= N <= 1,000,000,000)

www.acmicpc.net

 

풀이

import sys

t = int(sys.stdin.readline().rstrip())


def solution(number):
    if number < 10:
        return 1

    answer = 0
    index = 9
    # 가장 큰 수부터 나누며 계속 나눌 수 있는 경우 반복하여 나누어준다.
    # 2자리는 1의 자리 2개로 바꿀 수 있으므로 계산하는 의미가 없다.
    while index > 1:
        if number % index != 0:
            index -= 1
            continue

        answer += 1
        number //= index

        if number == 1:
            return answer
    
    return -1


for _ in range(t):
    sys.stdout.write(str(solution(int(sys.stdin.readline().rstrip()))) + "\n")

 

채점 결과