Skip to content

Commit daf017f

Browse files
committed
[Silver III] Title: Four Squares, Time: 192 ms, Memory: 18772 KB -BaekjoonHub
1 parent 11059c2 commit daf017f

File tree

2 files changed

+57
-0
lines changed

2 files changed

+57
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
import java.util.*;
2+
3+
public class Main {
4+
5+
static int[] DP = new int[50001];
6+
7+
public static void main(String[] args) {
8+
Scanner sc = new Scanner(System.in);
9+
10+
int N = sc.nextInt();
11+
12+
for(int i=1; i<=N; i++){
13+
DP[i] = Integer.MAX_VALUE;
14+
}
15+
16+
DP[0] = 0;
17+
DP[1] = 1;
18+
19+
for(int i=2; i<=N; i++){ //모든 DP 배열을 채우기 위함
20+
for(int j=1; j*j<=i; j++){ //1^2, 2^2, 3^2 ... 의 형태인 제곱수를 DP 계산에 사용하였으므로 기존에 재활용하는 DP+1을 해줌
21+
DP[i] = Math.min(DP[i], DP[i-j*j]+1); //가능한 모든 경우를 검사하면서 매 루프마다 최소의 갯수 업데이트
22+
}
23+
}
24+
25+
System.out.println(DP[N]);
26+
}
27+
}
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
# [Silver III] Four Squares - 17626
2+
3+
[문제 링크](https://www.acmicpc.net/problem/17626)
4+
5+
### 성능 요약
6+
7+
메모리: 18772 KB, 시간: 192 ms
8+
9+
### 분류
10+
11+
브루트포스 알고리즘, 다이나믹 프로그래밍
12+
13+
### 제출 일자
14+
15+
2025년 5월 5일 01:11:58
16+
17+
### 문제 설명
18+
19+
<p>라그랑주는 1770년에 모든 자연수는 넷 혹은 그 이하의 제곱수의 합으로 표현할 수 있다고 증명하였다. 어떤 자연수는 복수의 방법으로 표현된다. 예를 들면, 26은 5<sup>2</sup>과 1<sup>2</sup>의 합이다; 또한 4<sup>2</sup> + 3<sup>2</sup> + 1<sup>2</sup>으로 표현할 수도 있다. 역사적으로 암산의 명수들에게 공통적으로 주어지는 문제가 바로 자연수를 넷 혹은 그 이하의 제곱수 합으로 나타내라는 것이었다. 1900년대 초반에 한 암산가가 15663 = 125<sup>2</sup> + 6<sup>2</sup> + 1<sup>2</sup> + 1<sup>2</sup>라는 해를 구하는데 8초가 걸렸다는 보고가 있다. 좀 더 어려운 문제에 대해서는 56초가 걸렸다: 11339 = 105<sup>2</sup> + 15<sup>2</sup> + 8<sup>2</sup> + 5<sup>2</sup>.</p>
20+
21+
<p>자연수 <em>n</em>이 주어질 때, <em>n</em>을 최소 개수의 제곱수 합으로 표현하는 컴퓨터 프로그램을 작성하시오.</p>
22+
23+
### 입력
24+
25+
<p>입력은 표준입력을 사용한다. 입력은 자연수 <em>n</em>을 포함하는 한 줄로 구성된다. 여기서, 1 ≤ <em>n</em> ≤ 50,000이다.</p>
26+
27+
### 출력
28+
29+
<p>출력은 표준출력을 사용한다. 합이 <em>n</em>과 같게 되는 제곱수들의 최소 개수를 한 줄에 출력한다.</p>
30+

0 commit comments

Comments
 (0)