Skip to content

Commit

Permalink
Baekjoon #1699
Browse files Browse the repository at this point in the history
  • Loading branch information
allrightDJ0108 committed Aug 23, 2023
1 parent 8acd47d commit 66e5158
Show file tree
Hide file tree
Showing 2 changed files with 38 additions and 0 deletions.
Binary file not shown.
38 changes: 38 additions & 0 deletions CodingTestStudy1.0/src/DynamicProgramming/Problem1699.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package DynamicProgramming;

import java.io.*;

public class Problem1699 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

int N = Integer.parseInt(br.readLine());

int[] dp = new int[N + 1];
int[] num = new int[N + 1];

for (int i = 1; i < N + 1; i++) {
num[i] = i * i;
}

dp[1] = 1;
if (N > 1) {
dp[2] = 2;
}
if (N > 2) {
dp[3] = 3;
}
for (int i = 4; i < N + 1; i++) {
//1의 제곱수로만 표현할 수 있는 개수 최소화
dp[i] = i;
for (int j = 1; num[j] <= i; j++) {
//N에 가장 가까운 제곱수를 뺀 dp값 - 1
dp[i] = Math.min(dp[i - num[j]] + 1, dp[i]);
// 처음 세웠던 점화식(오답)
// dp[i] = Math.min(i / num[j] + i % num[j], dp[i]);
}
}

System.out.println(dp[N]);
}
}

0 comments on commit 66e5158

Please sign in to comment.