알고리즘
그리디
[2777] 숫자 놀이
by Hwang
문제
https://www.acmicpc.net/problem/2777
풀이
일의 자리수부터 가장 큰 숫자를 넣어주면서 N를 만드는 방식으로 풀이했습니다.
모든 자릿수의 곱이 가장 작으려면 낮은 자리수에 큰 수를 채워주면 됩니다. 따라서 가장 큰 숫자면서 N과 나누어 떨어지는 수를 dfs 방식으로 계속 곱해가며 값을 찾아주었습니다.
import sys
T = int(sys.stdin.readline())
def dfs(current, depth):
global result
if result != -1:
return
if current == 1:
result = depth if depth != 0 else 1
return
for i in range(9, 1, -1):
if current % i == 0 and result == -1:
dfs(current // i, depth + 1)
for _ in range(T):
N = int(sys.stdin.readline())
result = -1
dfs(N, 0)
print(result)
Comment