File tree Expand file tree Collapse file tree 1 file changed +42
-0
lines changed
Expand file tree Collapse file tree 1 file changed +42
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.* ;
4+
5+ public class Main {
6+ public static void main (String [] args )throws IOException {
7+ BufferedReader br= new BufferedReader (new InputStreamReader (System . in));
8+ List<int[]> arrs = new ArrayList<> ();
9+ String line;
10+ while (true ){
11+ line = br. readLine();
12+ if (" " . equals(line) || line == null ){
13+ break ;
14+ }
15+ StringTokenizer st= new StringTokenizer (line);
16+ int w= Integer . parseInt(st. nextToken());
17+ int b= Integer . parseInt(st. nextToken());
18+ arrs. add(new int []{w,b});
19+ }
20+
21+ int n = arrs. size();
22+ // dp[i][j][k] = i번째 멤버까지 보았을때, 백을 j명 뽑았고, 흑을 k명 뽑았을때의 최대 점수 합
23+ int [][][] dp = new int [n+ 1 ][16 ][16 ];
24+ for (int i= 1 ; i<= n; i++ ){
25+ int w = arrs. get(i- 1 )[0 ];
26+ int b = arrs. get(i- 1 )[1 ];
27+ for (int j= 0 ; j<= 15 ; j++ ){
28+ for (int k= 0 ; k<= 15 ; k++ ){
29+ dp[i][j][k] = dp[i- 1 ][j][k];
30+ if (j > 0 )
31+ dp[i][j][k] = Math . max(dp[i][j][k], dp[i- 1 ][j- 1 ][k] + w);
32+ if (k > 0 )
33+ dp[i][j][k]= Math . max(dp[i][j][k], dp[i- 1 ][j][k- 1 ] + b);
34+ }
35+ }
36+ // System.out.println(dp[i][w][b]);
37+ }
38+ System . out. println(dp[n][15 ][15 ]);
39+ }
40+ }
41+
42+ ```
You can’t perform that action at this time.
0 commit comments