diff --git "a/lkhyun/202509/03 BOJ G5 \355\207\264\354\202\254 2.md" "b/lkhyun/202509/03 BOJ G5 \355\207\264\354\202\254 2.md" new file mode 100644 index 00000000..8ed8fc6f --- /dev/null +++ "b/lkhyun/202509/03 BOJ G5 \355\207\264\354\202\254 2.md" @@ -0,0 +1,44 @@ +```java +import java.util.*; +import java.io.*; + +public class Main{ + static BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); + static StringTokenizer st; + static int N; + static int[] time; + static int[] reward; + static int[] dp; + + public static void main(String[] args) throws Exception { + N = Integer.parseInt(br.readLine()); + time = new int[N+1]; + reward = new int[N+1]; + dp = new int[N+2]; + + for (int i = 1; i <= N; i++) { + st = new StringTokenizer(br.readLine()); + int t = Integer.parseInt(st.nextToken()); + int r = Integer.parseInt(st.nextToken()); + time[i] = t; + reward[i] = r; + } + + int ans = 0; + for (int i = 1; i <= N; i++) { + dp[i] = Math.max(dp[i],dp[i-1]); + int cur = i+time[i]; + if(cur<=N+1){ + dp[cur] = Math.max(dp[cur],dp[i] + reward[i]); + } + + } + for (int i = 1; i <= N+1; i++) { + ans = Math.max(ans,dp[i]); + } + bw.write(ans+""); + bw.close(); + } +} +```