본문 바로가기

ProgramSoliving

백준 : 2262

반응형

그리디로도 풀 수 있다는데 dp로 풀었다.

 

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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
 
public class Main {
    static int N;
    static int dp[][];
    static int arr[];
    static final int INF = 987654321;
 
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st;
 
        N = Integer.parseInt(br.readLine());
        st = new StringTokenizer(br.readLine());
        arr = new int[N];
        dp = new int[N][N];
        for (int i = 0; i < N; i++) {
            arr[i] = Integer.parseInt(st.nextToken());
        }
 
        System.out.println(dfs(0, N - 1));
    }
 
    public static int dfs(int l, int r) {
        if (dp[l][r] != 0) {
            return dp[l][r];
        }
 
        if (l == r)
            return 0;
 
        int minValue = INF;
 
        for (int i = l; i < r; i++) {
            int left = dfs(l, i);
            int right = dfs(i + 1, r);
            int m1 = INF;
            int m2 = INF;
            int j;
            for (j = l; j <= i; j++) {
                m1 = Math.min(m1, arr[j]);
            }
            for (; j <= r; j++) {
                m2 = Math.min(m2, arr[j]);
            }
            minValue = Math.min(minValue, left + right + Math.abs(m1 - m2));
        }
 
        return dp[l][r] = minValue;
    }
}
http://colorscripter.com/info#e" target="_blank" style="color:#e5e5e5text-decoration:none">Colored by Color Scripter

 

그리디 아이디어는 등수가 1등에 가까울수록 나중에 경기를 치루어야한다.

 

반응형

'ProgramSoliving' 카테고리의 다른 글

백준 : 1022  (0) 2020.05.14
백준 : 2252 DFS ,BFS  (0) 2020.05.13
백준 : 4354 java  (0) 2020.05.05
백준 : 17387  (0) 2020.05.05
백준 : 3025 java (돌 던지기)  (0) 2020.05.04