티스토리 뷰
1. 문제
https://www.acmicpc.net/problem/1463
1463번: 1로 만들기
첫째 줄에 1보다 크거나 같고, 106보다 작거나 같은 정수 N이 주어진다.
www.acmicpc.net
2. 설명
문제에 설명되어 있는 조건에 따라 최솟값을 구하고, min 배열에 저장했다.
bottom-up 방식 사용
DP에서 가장 어려운게 (내기준) 점화식 규칙을 뽑아내는 건데 이 문제는 문제에서 말해줘서 쉬웠다.
3. 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int N = scan.nextInt();
int[] min = new int[1000001]; // N <= 10^6
min[1] = 0;
for(int i=2; i<=N; i++) {
min[i] = min[i-1] + 1; // 조건 3
if(i%2==0) min[i] = Math.min(min[i], min[i/2] + 1); // 조건 2
if(i%3==0) min[i] = Math.min(min[i], min[i/3] + 1); // 조건 1
}
System.out.println(min[N]);
}
}
'알고리즘 풀이 > 백준' 카테고리의 다른 글
백준 1003 피보나치 함수 JAVA (DP) (0) | 2020.07.04 |
---|---|
백준 9095 1, 2, 3 더하기 JAVA (DP) (0) | 2020.07.03 |
백준 11723 집합 JAVA (bitmask 비트마스크) (0) | 2020.06.29 |
백준 11399 ATM JAVA (0) | 2020.06.28 |
백준 12865 평범한 배낭 JAVA (knapsack problem, 배낭문제, DP) (0) | 2020.06.25 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday