티스토리 뷰
#include <stdio.h>
int stickers[2][100000];
int memo[3][100000];
int n;
int max(int a, int b)
{
return a > b ? a : b;
}
int maxsum(int col, int before)
{
int ret = 0;
if (col == n)
return 0;
if (memo[before][col] != -1)
return memo[before][col];
ret = maxsum(col + 1, 0);
if(before != 2)
ret = max(ret, maxsum(col + 1, 2) + stickers[1][col]);
if(before != 1)
ret = max(ret, maxsum(col + 1, 1) + stickers[0][col]);
memo[before][col] = ret;
return ret;
}
int main(void)
{
int i, T, t;
scanf("%d", &T);
for (t = 0; t < T; t++) {
scanf("%d", &n);
for (i = 0; i < n; i++)
scanf("%d", &stickers[0][i]);
for (i = 0; i < n; i++) {
scanf("%d", &stickers[1][i]);
memo[0][i] = memo[1][i] = memo[2][i] = -1;
}
printf("%d\n", maxsum(0, 0));
}
}
DP는 만나면 긴장된다. 이름 때문인 것 같다.
긴장해서인가? 실수들이 참...
메모이제이션 배열 초기화하다가 O(n^2) 나오기, 'j' 선언 후 초기화하지 않고 사용하기, scanf 변수에 '&' 안붙이기...
O(n^2)은 생각도 못해서 푸신 분 블로그에 있는 코드와 거의 같은 모양으로 만든 후에야 발견했다.
역시 긴장하면 될 것도 안돼.
적당한 긴장은 필요하다지만 점점 공감되지 않는다. 긴장하면 그냥 불안한데. 기대하는 건 도움이 되기도 한다. 난 적당히 긴장하는게 아니라 적당히 기대하는 걸로 해야겠당 와하하
'프로그래밍 > 문제풀이' 카테고리의 다른 글
[BOJ] 11057 오르막 수 (0) | 2020.02.27 |
---|---|
[BOJ] 10844 쉬운 계단 수 (0) | 2020.02.27 |
[프로그래머스] 단어 변환 (0) | 2020.02.11 |
[프로그래머스] 숫자 야구 (0) | 2020.02.11 |
[BOJ] 1260 DFS와 BFS (0) | 2020.02.03 |
댓글