
-Code
import java.util.Scanner;
public class BOJ1463 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int[] dp = new int[n + 1];
for (int i = 2; i <= n; i++) {
dp[i] = dp[i - 1] + 1;
if (i % 2 == 0) {
dp[i] = Math.min(dp[i / 2] + 1, dp[i]);
}
if (i % 3 == 0) {
dp[i] = Math.min(dp[i / 3] + 1, dp[i]);
}
}
System.out.println(dp[n]);
}
}
직접 값을 몇개 넣어보니 다음과 같았습니다.
- 1 ▶️ 1
- 2 ▶️ 1
- 3 ▶️ 1
- 3 ▶️ 2
- 5 ▶️ 3
- 6 ▶️ 2
- 7 ▶️ 3
- 8 ▶️ 3
- 9 ▶️ 2
-10 ▶️ 3
그래서 inde에 2와 3으로 뭔가 나눠야한다는 생각은 했지만 로직을 이상하게 짰습니다. 그래서 뭐가 잘못된지 보니 이전 값의 +1한 값과 또 비교를 해줘야 했고 else if로 감싸면 안되었습니다. 이부분을 알게되어 해결했습니다.
'Beakjoon&프로그래머스 > Java' 카테고리의 다른 글
| [프로그래머스/Java] 완주하지 못한 선수 (0) | 2026.01.08 |
|---|---|
| [백준/Java] 27982번 큐브 더미 (0) | 2026.01.08 |
| [백준/Java] 1932번 정수 삼각형 (0) | 2026.01.07 |
| [백준/Java] 9461번 파도반 수열 (0) | 2026.01.07 |
| [백준/Java] 1904번 01타일 (0) | 2026.01.07 |