시간 제한이 굉장히 타이트한 문제이다.처음엔 매번 num에서 가능한 제곱수를 찾아 빼는 방식으로 작동시켰었는데, 이는 큰 수에 대해 매우 비율적이기 때문에 dp 배열을 만들어 각 숫자를 만들 수 있는 제곱수의 최소 개수를 저장하도록 작성하였다. 동적 계획법(DP) ?- 각 숫자를 만들 수 있는 최소 제곱수의 개수를 저장하고, 그 값을 이전에 계산된 결과를 활용해 구하는 방법 import mathnum = int(input())dp = [float('inf')]*(num + 1)dp[0] = 0 # 0을 만들기 위한 최소 제곱수 개수는 0for i in range(1, num + 1): for j in range(1, int(math.sqrt(i))+ 1): dp[i] = min(dp[i..