Home G2229. 조 짜기
Post
Cancel

G2229. 조 짜기

문제

image


제출 코드

image


  • 사용 알고리즘 : DP


  • 주어진 숫자를 하나씩 읽어가면서, dp배열에 i번째 수까지 고려했을 경우 점수 최대값을 저장
  • i번째 수부터, 역순으로 고려할 숫자를 하나씩 늘려가면서 i번째 수가 포함된 마지막 조의 점수를 계산해준다 → 마지막 조 점수 + 이전 조 최대점수(dp[j-1]) ⇒ 최대값을 현재 dp에 저장

    image


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
package gold;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class G2229_makeGroup {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int N = Integer.parseInt(br.readLine());
		int[] df = new int[N], num = new int[N];

		String[] ch = br.readLine().split(" ");
		num[0] = Integer.parseInt(ch[0]);
		int result = 0;

		for(int i=1; i<N; i++) {
			num[i] = Integer.parseInt(ch[i]);
			int min=num[i], max=num[i];
			df[i]=df[i-1];
			for(int j=i-1; j>=0; j--) {
				min = Math.min(min, num[j]);
				max = Math.max(max, num[j]);
				df[i] = Math.max(((j==0)?0:df[j-1])+max-min, df[i]);
			}
			result = Math.max(result, df[i]);
		}
		System.out.println(result);
	}
}
This post is licensed under CC BY 4.0 by the author.