728x90
배열 넉넉하게 안해서 컴파일 에러남
최대값을 만드는 점화식
dp[i+T[i]] = Math.max(dp[i+T[i]], dp[i]+P[i]);
을 찾자
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 | import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner (System.in); int N = sc.nextInt(); int[] T = new int[N+6]; int[] P = new int[N+6]; int[] dp = new int[N+6]; for(int i=1; i<=N; i++) { T[i] = sc.nextInt(); P[i] = sc.nextInt(); } int max=0; for(int i=1;i<=N+1; i++) { dp[i]=Math.max(max, dp[i]); if(i+T[i]<=N+1) { dp[i+T[i]] = Math.max(dp[i+T[i]], dp[i]+P[i]); } if(max<dp[i]) max=dp[i]; } System.out.println(max); } } |
'알고리즘 풀이 > 백준' 카테고리의 다른 글
[백준][Java] 1937번 욕심쟁이 판다 (0) | 2018.05.18 |
---|---|
[백준][Java] 5063번 TGN (0) | 2018.05.17 |
[백준][Java] 11650번 좌표 정렬하기 (0) | 2018.05.16 |
[백준][Java] 2884번 알람 시계 (0) | 2018.05.16 |
[백준][Java] 2563번 색종이 (0) | 2018.05.16 |