336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
백준알고리즘
https://www.acmicpc.net/problem/2579
세계의 계단을 연속해서 오를 수가 없다.
현재 있는 계단 전의 계단을 밟지 않은 경우와 계단 전의 계단을 밟은 경우를 저장한 후
Math.max(stairArray[i] + memoArray[i - 2], stairArray[i] + stairArray[i - 1] + memoArray[i - 3]); 기저 식을 대입하여 문제를 풀었다.
import java.util.Scanner; public class Test { public static int[] memoArray; public static int[] stairArray; public static int count; public static void main(String[] args) { Scanner scan = new Scanner(System.in); count = Integer.parseInt(scan.nextLine().trim()); stairArray = new int[count + 1]; for(int i = 1; i < stairArray.length; i++) { stairArray[i] = Integer.parseInt(scan.nextLine().trim()); } memoArray = new int[count + 1]; for(int i = 1; i < memoArray.length; i++) { memoArray[i] = 0; } calculate(); } public static void calculate() { for(int i = 1; i < memoArray.length; i++) { if(i < 3) { memoArray[i] += memoArray[i-1] + stairArray[i]; continue; } if(i == 3) { memoArray[i] = Math.max(stairArray[i] + memoArray[i - 2], stairArray[i] + stairArray[i - 1]); continue; } if(i > 3) { memoArray[i] = Math.max(stairArray[i] + memoArray[i - 2], stairArray[i] + stairArray[i - 1] + memoArray[i - 3]); } } System.out.println(memoArray[count]); } }
'알고리즘 및 자료구조 > 문제' 카테고리의 다른 글
백준알고리즘 1546번 평균 (0) | 2018.04.23 |
---|---|
백준알고리즘 9461번 파도반 수열 (0) | 2018.04.23 |
백준알고리즘 9095번 1, 2, 3 더하기 (0) | 2018.04.23 |
백준알고리즘 1463번 1로만들기 (0) | 2018.04.23 |
백준알고리즘 1009번 분산처리 (1) | 2016.04.29 |