티스토리 뷰
출저 : https://www.acmicpc.net/problem/1463
"DP DP 딥"
1을 가지고 N을 만든다고 역으로 생각하자.
dp[3] 까지 최소값을 구한다. 1이 되겠다. 그 이후에 4를 만드려면 어떤 방법이 있을까? 2 에서 2를 곱하거나 3에서 더하기 1을 하거나.
dp[n/2] + 1 ( n % 2 == 0 )
dp[n] = dp[n/3] + 1 ( n % 3 == 0 )
dp[n-1]
이중에 최소값을 dp[n]으로 한다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | import java.util.Scanner; public class Main { static int n; static int[] dp; public static void main(String[] args) { Scanner sc = new Scanner(System.in); n = sc.nextInt(); dp = new int[n+1]; if(n == 1) { System.out.println(0); return; } else if ( n == 2) { System.out.println(1); return; } else if (n == 3) { System.out.println(1); return; } // dp값 초기화 dp[2] = dp[3] = 1; for (int i = 4; i <= n; i++) { int min = dp[i-1]; if(i % 2 == 0) { min = Math.min(min, dp[i/2]); } if(i % 3 == 0) { min = Math.min(min, dp[i/3]); } dp[i] = min + 1 ; } System.out.println(dp[n]); } } | cs |
'Study > 알고리즘 문제풀이' 카테고리의 다른 글
백준 2583. 영역 구하기 :: 돼지개발자 (0) | 2019.02.07 |
---|---|
백준 2234. 성곽 :: 돼지개발자 (0) | 2019.02.07 |
백준 2579. 게단 오르기 :: 돼지개발자 (0) | 2019.02.01 |
백준 1149. RGB거리 :: 돼지개발자 (0) | 2019.02.01 |
백준 1003. 피보나치 함수 :: 돼지개발자 (0) | 2019.02.01 |
댓글
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday