티스토리 뷰

문제 링크

https://www.acmicpc.net/problem/1699

 

1699번: 제곱수의 합

어떤 자연수 N은 그보다 작거나 같은 제곱수들의 합으로 나타낼 수 있다. 예를 들어 11=32+12+12(3개 항)이다. 이런 표현방법은 여러 가지가 될 수 있는데, 11의 경우 11=22+22+12+12+12(5개 항)도 가능하다

www.acmicpc.net

 

자연수 n의 가능한 제곱수의 합은

먼저 1² 을 n번 더하는 경우가 모든 자연수에 적용가능합니다.

다음은 n보다 작은 제곱수(1², 2², 3² ...) 중 n - 제곱수번째의 합 + 1이 될 수 있습니다.

 

n을 10으로 예를들면 1²을 10번 더하는 방법이 있습니다.

10보다 작은 제곱수는 1², 2², 3²으로 총 3가지가 있습니다.

1. 10 - 1² = 9번째의 값은 3² 이므로 1² 하나만 더해주는 방법이 가능합니다.

2. 10 - 2² = 6번째의 값은 2²+1² 이므로 2² 하나만 더해주는 방법이 가능합니다.

3. 10 - 3² = 1번째의 값은 1² 이므로 3² 하나만 더해주는 방법이 가능합니다.

 

이렇게 구한 값들 중 최소값을 구해주면 됩니다.

 

 

구현 코드