728x90
https://www.acmicpc.net/problem/1463
package BKD_0x10_DP;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BOJ_1463 {
static Integer[] dp;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
dp = new Integer[N+1];
dp[0] = dp[1]=0;
System.out.println(recur(N));
}
static int recur(int N){
if(dp[N] == null){
if(N%6==0){
dp[N] = Math.min(recur(N-1),Math.min(recur(N/3), recur((N/2))))+1;
// 계산 되는 값들 중 가장 최소값을 다음 값으로 지정
// 3과 2의 배수인 6의 경우일 때는 모든 경우의 수를 다 적용 해봐야 한다.
}else if(N %3==0){
dp[N] = Math.min(recur(N/3),recur(N-1))+1;
} else if (N%2==0) {
dp[N] = Math.min(recur(N/2),recur(N-1))+1;
}else{
dp[N] = recur(N-1)+1;
}
}
return dp[N];
}
}

DP를 처음 풀어보기 때문에 기존 풀이를 보며 흐름을 읽히는 데에 집중하며 풀었다.
또한 DP에대한 개념을 이해하며 풀이를 진행하였다.
참고 url :
https://hongjw1938.tistory.com/47
알고리즘 - Dynamic Programming(동적 계획법)
1. 개요 DP, 즉 다이나믹 프로그래밍(또는 동적 계획법)은 기본적인 아이디어로 하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용하는 것으로
hongjw1938.tistory.com
https://st-lab.tistory.com/133
[백준] 1463번 : 1로 만들기 - JAVA [자바]
www.acmicpc.net/problem/1463 1463번: 1로 만들기 첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다. www.acmicpc.net 문제 알고리즘 [접근 방법] 생각보다 어렵지 않게 풀 수 있는 문제다.
st-lab.tistory.com
728x90
'🐣 알고리즘 삐약 > 💻 백준 삐약' 카테고리의 다른 글
73 삐약 : 백준 5279| 계단 오르기 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.14 |
---|---|
72 삐약 : 백준 9095| 1,2,3 더하기 [바킹독 문제 풀이|DP|JAVA] (0) | 2024.06.14 |
70 삐약 : 백준 4179| 불! [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.06.12 |
69 삐약 : 백준 13913| 숨바꼭질4 [바킹독 문제 풀이|BFS|JAVA] (0) | 2024.06.11 |
68 삐약 : 백준 2573| 빙산 [바킹독 문제 풀이|BFS|JAVA] (1) | 2024.06.09 |