-
백준 9095 1, 2, 3 더하기동적계획법 활용 2가지 풀이 ( Java )Problem Solving/Java 2019. 10. 25. 15:46반응형
- Bottom-up ( 반복문 활용 ) 방식
123456789101112131415161718192021222324252627282930313233343536373839public class Main {public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int times = Integer.parseInt(br.readLine());int[] d = new int[11];d[0] = 1;// n 으로 0이 들어올 경우는 아무것도 하지 않는 한가지 방법이 있어야 하나]d[1] = 1;d[2] = 2;d[3] = 4;// 1,2,3이 입력으로 들어올 때 기저사례 세팅for (int i = 4; i < 11; i++) {d[i] = d[i - 1] + d[i - 2] + d[i - 3];// 기저사례 활용해 4부터 최대 입력인 11까지 구해서 배열에 저장}for (int i = 0; i < times; i++) {int n = Integer.parseInt(br.readLine());// 테스트 케이스 받고// 출력bw.write('\n');}}}- Top-Down ( 재귀 호출 활용 ) 방식
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768public class Main {public static int[] memo;public static int plus(int n) {if (memo[n] > 0) {// 메모에 값이 있으면return memo[n];// 메모값 리턴}if (n == 0) {memo[n] = 1;return memo[n];}if (n == 1) {memo[n] = 1;return memo[n];}if (n == 2) {memo[n] = 2;return memo[n];}if (n == 3) {memo[n] = 4;return memo[n];}// 기저 사례 세팅memo[n] = plus(n-1) + plus(n-2) + plus(n-3);// 끝에 1이 오는 경우 , 끝에 2가 오는 경우 , 끝에 3이 오는 경우일 때의 방법들을 모두 합하면// n일 때 값을 구할 수 있다return memo[n];}public static void main(String[] args) throws IOException {BufferedReader br = new BufferedReader(new InputStreamReader(System.in));BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));int times = Integer.parseInt(br.readLine());memo = new int[11];for (int i = 0; i < times; i++) {int n = Integer.parseInt(br.readLine());// 테스트 케이스 받고int answer = plus(n);// 출력bw.write('\n');}}}아직도 Bottom-up 방식이 편하지만 슬슬 재귀 호출이 직관적으로 다가오는 것 같다
반응형'Problem Solving > Java' 카테고리의 다른 글
백준 16194 카드 구매하기2 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.10.25 백준 11052 카드 구매하기 동적계획법 활용 2가지 풀이 ( Java ) (1) 2019.10.25 백준 11727 2xn 타일링2 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.10.24 백준 11726 2xn 타일링 동적계획법 활용 2가지 풀이 ( Java ) (3) 2019.10.24 백준 1463번 1로 만들기 동적계획법 활용 2가지 풀이 ( Java ) (0) 2019.10.24