-
728x90
DP - 1463, 11726, 11727, 9095, 10844, 11057, 2193, 9465, 2156, 11053, 11055, 11722, 11054, 1912, 2579, 1699, 2133, 9461, 2225, 2011, 11052
출처: https://plzrun.tistory.com/entry/알고리즘-문제풀이PS-시작하기 [plzrun's algorithm]<풀이> - Bottom up
요즘 다이나믹 프로그래밍 문제들을 풀면서 점화식 구하는 과정이 어려웠는데,
문제들을 다양하게 계속 접하다보니 어느정도 익숙해졌나보다.
조금만 나열을 해보고 규칙을 나름 쉽게 파악했다.
길이가 n인 경우의 수는 n-1인 경우에 의존적이다.
n-1의 마지막 숫자가 0이었다면 0과 1이 모두 올 수 있고, 1이었다면 0만 올 수 있다.
이를 활용하면 손쉽게 점화식을 구할 수 있다.
1234567891011121314151617181920212223242526272829303132333435package dp;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;public class N2193 {public static void main(String[] args) throws NumberFormatException, IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));int n =Integer.parseInt(br.readLine());long dp[][] = new long[91][2];dp[1][1] = 1;dp[2][0] = 1;for(int i=3;i<n+1;i++) {for(int j =0; j<2; j++) {if(j==0) {dp[i][j] = dp[i-1][0] + dp[i-1][1];}else {dp[i][j] = dp[i-1][0];}}}long sum = dp[n][0] + dp[n][1];System.out.println(sum);}}Colored by Color Scripter
***
구현과정에서는 한 가지 문제가 있었는데, 테스트 범위 내 최대 n인 90의 경우 int형이 감당을 못한다.
따라서 dp[][]와 sum은 long으로 정의해주어야 정상적으로 풀린다.
Github: https://github.com/jaeuk9407/AlgorithmBOJ
'Algorithms' 카테고리의 다른 글
[백준 알고리즘] (DP) 2156번 Java 풀이 (0) 2020.03.23 [백준 알고리즘] (DP) 9465번 Java 풀이 (0) 2020.03.20 [백준 알고리즘] (DP) 11057번 Java 풀이 (0) 2020.03.15 [백준 알고리즘] (DP)10844번 Java 2가지 풀이 (0) 2020.03.14 [백준 알고리즘] (DP) 9095번 Java 2가지 풀이 (0) 2020.03.12 댓글