File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed
Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change 1+ // Baekjoon_14501_퇴사
2+ package sollyj .week4 ;
3+
4+ import java .io .BufferedReader ;
5+ import java .io .InputStreamReader ;
6+ import java .util .StringTokenizer ;
7+
8+ public class 퇴사 {
9+ public static void main (String [] args ) {
10+ try (BufferedReader br = new BufferedReader (new InputStreamReader (System .in ))) {
11+ StringTokenizer st ;
12+
13+ int N = Integer .parseInt (br .readLine ());
14+ int [] T = new int [N ]; // 상담 기간
15+ int [] P = new int [N ]; // 금액
16+
17+ // 1. 테이블 정의
18+ // n일까지의 최대 수익
19+ int [] profit_max = new int [N + 1 ];
20+
21+ // 2. 초기값 세팅
22+ for (int i = 0 ; i < N ; i ++) {
23+ st = new StringTokenizer (br .readLine ());
24+
25+ T [i ] = Integer .parseInt (st .nextToken ());
26+ P [i ] = Integer .parseInt (st .nextToken ());
27+ }
28+
29+ // 3. 점화식
30+ for (int i = 0 ; i < N ; i ++) {
31+ if (i + T [i ] <= N ) { // i일에 상담을 했을때 퇴사일 까지 상담을 마칠수 있다면
32+ // profit_max[i + T[i]]: 현재 값
33+ // profit_max[i] + P[i]: i일에 상담을 했을 때 수익
34+ profit_max [i + T [i ]] = Math .max (profit_max [i + T [i ]], profit_max [i ] + P [i ]);
35+ }
36+
37+ // 예외 (예제 입력4 같은 경우)
38+ // 꼭 i + T[i]만 상담 할 수 있는 것은 아니고, 상담 다음날 상담을 할 수도 있는 것이다.
39+ profit_max [i + 1 ] = Math .max (profit_max [i ], profit_max [i + 1 ]);
40+ }
41+
42+ // 4. 답 도출
43+ System .out .println (profit_max [N ]);
44+ } catch (Exception e ) {
45+ System .out .println (e .getLocalizedMessage ());
46+ }
47+ }
48+ }
You can’t perform that action at this time.
0 commit comments