티스토리 뷰

algorithm

[DP] 2156

tonirr 2020. 4. 23. 08:01

public class Main {
	static int dp[], score[];
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
			int n = sc.nextInt();
		
			dp = new int[n+1];
			score = new int[n+1];
	
			for(int j = 0; j < n; j++) {
				score[j] = sc.nextInt();
			}
			
			sc.close();
			
			if(n == 1) {
				System.out.println(score[0]);
			}else if(n == 2) {
				System.out.println(score[0]+score[1]);
			}else {
				dp[0] = score[0];
				dp[1] = dp[0] + score[1];
				dp[2] = Math.max(dp[1], Math.max(score[0] + score[1], score[1] + score[2]));
			}
					
			for(int k = 2; k <= n; k++) {
				dp[k] = Math.max(dp[k-3] + score[k-1] + score[k], dp[k-2] + score[k]);
				dp[k] = Math.max(dp[k-1], dp[k]);
			}
			
			System.out.println(dp[n]);
		}
	
}

런타임 에러 

  • dp[k] 를 구하는 과정에서 
    • 아웃오브바운드 에러가 나서 살펴보니 k값을 2부터 n으로 하고 있었는데 for문안에서 k-3을 계산하고 있었다.
      • k의 바운드를 3부터 n-1로 바꾸었다. 처음부터 배열이 0부터 시작하니 n-1로 했어야 했음
    • 프린트를 if문마다 각각 찍고있어야 하는데 else문 밖에서 찍고 있었음

아래코드로 다시 제출

public class Main {
	static int dp[], score[];
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in); 
		int n = sc.nextInt();
	
		dp = new int[n+1];
		score = new int[n+1];

		for(int j = 0; j < n; j++) {
			score[j] = sc.nextInt();
		}
		sc.close();
		
		if(n == 1) {
			System.out.println(score[0]);
		}else if(n == 2) {
			System.out.println(score[0]+score[1]);
		}else {
			dp[0] = score[0];
			dp[1] = dp[0] + score[1];
			dp[2] = Math.max(dp[1], Math.max(score[1] + score[2], score[0] + score[2]));
				
			for(int k = 3; k < n; k++) {
				dp[k] = Math.max(dp[k-3] + score[k-1] + score[k], dp[k-2] + score[k]);
				dp[k] = Math.max(dp[k-1], dp[k]);
			}
			
			System.out.println(dp[n-1]);			
		}
	}
}

'algorithm' 카테고리의 다른 글

[dp] 1699  (0) 2020.04.28
[DP] 2579 런타임에러  (0) 2020.04.27
[DP] 9465, 2156  (0) 2020.04.22
[DP] 11057  (0) 2020.04.20
[DP] 타일링 문제 11726, 11727, 9095  (0) 2020.04.15
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
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 31
글 보관함