[BOJ 1463] 1로 만들기 (Java, DP)알고리즘/동적 프로그래밍2023. 6. 30. 21:28
Table of Contents
반응형
문제 링크
https://www.acmicpc.net/problem/1463
문제 풀이
- 상향식(Bottom-up)으로 DP 풀이
- 시간복잡도 O(N)
*DP 배열 결과
idx | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
DP | 0 | 0 | 1 | 1 | 2 | 3 | 2 | 3 | 3 | 2 | 3 |
제출 코드
import java.util.*;
import java.io.*;
public class Main {
static int N;
static int[] DP;
static void input() throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
N = Integer.parseInt(br.readLine());
}
static void pro() {
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], DP[i/2] + 1);
if(i % 3 == 0) DP[i] = Math.min(DP[i], DP[i/3] + 1);
}
System.out.println(DP[N]);
}
public static void main(String[] args) throws Exception {
input();
pro();
}
}
반응형
'알고리즘 > 동적 프로그래밍' 카테고리의 다른 글
[BOJ 18353] 병사 배치하기 (Java, DP, LIS) (0) | 2023.06.30 |
---|---|
[BOJ 10844] 쉬운 계단 수 (Java, DP) (0) | 2023.06.30 |
[BOJ 2156] 포도주 시식(Java, DP) (0) | 2023.06.30 |
[BOJ 2302] 극장 좌석 (Java, DP) (0) | 2023.06.29 |
[BOJ 2670] 연속부분최대곱 (Java, DP) (0) | 2023.06.28 |
@leejinwoo1126 :: 천천히 하나씩
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!