File tree Expand file tree Collapse file tree 1 file changed +34
-0
lines changed
Expand file tree Collapse file tree 1 file changed +34
-0
lines changed Original file line number Diff line number Diff line change 1+ package j2woo .week4 ;
2+ import java .io .*;
3+ import java .util .*;
4+ public class 퇴사 {
5+ public static void main (String [] args ) throws IOException {
6+ BufferedReader br =new BufferedReader (new InputStreamReader (System .in ));
7+ StringTokenizer st =new StringTokenizer (br .readLine ());
8+
9+ int N =Integer .parseInt (st .nextToken ()); // 퇴사 전까지 남은 N일
10+ // 상담 일정표 plan[i][0]: i일 상담의 걸리는 기간 T, plan[i][1]: i일 상담의 금액 P
11+ int [][] plan =new int [N +1 ][2 ]; // 1일부터 N일까지 확인위해 N+1
12+ for (int i =1 ; i <N +1 ; i ++){
13+ st =new StringTokenizer (br .readLine ());
14+ plan [i ][0 ]=Integer .parseInt (st .nextToken ());
15+ plan [i ][1 ]=Integer .parseInt (st .nextToken ());
16+ }
17+
18+ int D []=new int [N +2 ]; // 다이나믹 프로그래밍 사용, i일까지의 최대 수익, N+1일(퇴사까지 비교)
19+ for (int i =1 ; i <N +1 ; i ++){
20+ int T =plan [i ][0 ]; // i일 상담의 걸리는 시간
21+ int P =plan [i ][1 ]; // i일 상담의 금액
22+
23+ if (i +plan [i ][0 ]<=N +1 ){ // 오늘 상담이 퇴사 전까지 끝나는지 확인
24+ // i일의 상담을 들었을 때
25+ // D[i+T]=D[i+T]와 오늘까지의 최대값 D[i]+P 비교해서 큰 값 넣어주기
26+ D [i +T ]=Math .max (D [i +T ],D [i ]+P );
27+ }
28+ // i+1날의 값에 i+1날의 최대 수익과 오늘까지의 최대 수익 비교해서 넣어주기
29+ D [i +1 ]=Math .max (D [i +1 ],D [i ]);
30+ }
31+ // 퇴사날의 최대값 출력!
32+ System .out .println (D [N +1 ]);
33+ }
34+ }
You can’t perform that action at this time.
0 commit comments