<Algorithm> 214. 줄어들지않아(BOJ)
by BFine반응형
1. 2688번 줄어들지않아(BOJ)
사용 알고리즘 : DP
-
DP 기본적인 문제, 규칙을 찾아서 그걸 코드로 구현할 수 있는지 묻는 문제라는 생각이 들었다.
예전에 비슷한 문제를 풀어본 기억이 있어서 금방 풀 수 있었던 것 같다.
문제에 대한 접근&생각
- 최대 64자리의 줄어들지 않는 수 -> 완전탐색 불가! -> DP!
- 규칙 : 11~ 99까지 45가지 ( 1+2~+8+9), 100~999는 165가지 (1+3+~+36+45)
- 결과적으로 이전의 합의 누적이 된다. (1~9까지 합, 1~8까지합 ~)
코드
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 | import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); long[][] dp = new long[66][10]; for(int i = 1; i < 10; i++) { dp[1][i] = i; } /*************************** * DP를 이용해 이전값이 범위가 * 줄어들면서 누적되는 규칙을 * 적용하여 값을 출력한다. ***************************/ for(int u = 2; u <= 65; u++) { for(int i = 1; i < 10; i++) { for(int j = 1; j <= i; j++) { dp[u][i] +=dp[u-1][j]; } } } int n = sc.nextInt(); while(n-->0) { int k = sc.nextInt(); long res = 10; if(k == 1) { System.out.println(res); continue; } for(int i = 2; i <= k; i++) { res += Arrays.stream(dp[i-1]).sum(); } System.out.println(res); } } } | cs |
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 216. 땅따먹기(Programmers) (0) | 2019.06.05 |
---|---|
<Algorithm> 215. 가장 큰 정사각형 찾기(Programmers) (0) | 2019.06.05 |
<Algorithm> 213. 조짜기(BOJ) (0) | 2019.06.01 |
<Algorithm> 212. 제곱수의 합(BOJ) (0) | 2019.05.31 |
<Algorithm> 211. 동전(BOJ) (0) | 2019.05.31 |
블로그의 정보
57개월 BackEnd
BFine