티스토리 뷰
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문 밖에서 찍고 있었음
- 아웃오브바운드 에러가 나서 살펴보니 k값을 2부터 n으로 하고 있었는데 for문안에서 k-3을 계산하고 있었다.
아래코드로 다시 제출
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
링크
TAG
- dfs
- BFS
- 인접행렬
- 배열
- server side rendering
- javascript
- 구조체
- C
- 자료구조
- 운영체제
- 소프트웨어
- 퀵정렬
- 입출력장치
- 스텍
- 동적프로그래밍
- 최단경로
- 인접리스트
- 병행프로세스
- stackframe
- 알고리즘
- client side rendering
- 클래스
- Java
- 재귀함수
- Stack
- 이진탐색
- 교착상태
- 세마포어
- C++
- react
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함