페이지

2016년 12월 22일 목요일

[Algorithm] 포도주 시식



이번 문제는 포도주 시식 문제다. 사실 이름만 다르지 계단 문제랑 별로 다를바가 없다.

그래서 생각보다 간단하게 해결했다.

먼저 가장 먼저 확인 해야 할 두가지 , 연속 3잔 불가 와 최대값을 구하는 것.

연속성에 대한 문제는 이차원 배열을 활용하여 해결 하였다.(계단 오르기 문제)

비슷하게 해결하였다.

N번째 포도주를 마실 때 연속 상태가 0 , 1 , 2 인 경우에 대해서 일반 식을 세우고

세 가지 경우에 대한 최댓값을 구하면 끝 !


소스코드 :
package algorithm;

import java.io.*;

public class a_2156 {

public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
long[][] C = new long[N][3];
C[0][1] = Integer.parseInt(br.readLine());
for (int i = 1; i < N; i++) {
int v = Integer.parseInt(br.readLine());
C[i][0] = Math.max(C[i-1][0], Math.max(C[i-1][1], C[i-1][2]));
C[i][1] = C[i-1][0] + v;
C[i][2] = C[i-1][1] + v;
}
System.out.println(Math.max(C[N-1][0], Math.max(C[N-1][1], C[N-1][2])));
}

}


댓글 없음:

댓글 쓰기