레야몬
[C++] 9465번 스티커 - DP 본문
#include <iostream>
#include <algorithm>
#include <string.h>
#define MAX_NUM 100002
using namespace std;
int T, n; //테스트 케이스의 개수 T, 스티커 가로 크기 n
int map[3][MAX_NUM]; //스티커 맵
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> T;
for(int i=0; i<T; i++) {
cin >> n;
for(int j=0; j<2; j++) {
for(int k=1; k<=n; k++)
cin >> map[j][k];
}
for(int i=1; i<=n; i++) {
map[0][i]+=max(map[1][i-1], map[2][i-1]);
map[1][i]+=max(map[0][i-1], map[2][i-1]);
map[2][i]+=max(map[0][i-1], map[1][i-1]);
}
cout << max({map[0][n], map[1][n], map[2][n]}) << endl;
memset(map, 0, sizeof(int)*3*MAX_NUM);
}
return 0;
}
이제 실버는 쉽다. ㅋㅋㅋㅋㅋ 너무 쉽다. 저번 주까지만 해도 실버도 너무 어렵다. 막 이러면서 쩔쩔 맸었던 것 같은데 왠지 모르겠지만 이제는 너무 쉽다. 암튼... 이 코드를 짜고 나서 든 생각인데 생각해보니까 map[2][i]를 만들 필요가 없었다. 그냥 map[1][i-2], map[1][i-1]만 확인해주면 됬었는데... 뭐 코드 고치기는 싫으니까... 귀찮아
이번 문제는 참고 사이트가 없다. 그만큼 이제 실버는 쉽단 말씀!
※현재 고등학교 등교중인 학생입니다. 이제 알고리즘을 본격적으로 공부하기 시작해서 아직 초보입니다. 혹시 제가 잘못 알고있는 점이나 더 좋은 풀이 방법이 있어 댓글에 남겨주시면 감사히 하나하나 열심히 읽어보겠습니다. 좋아요, 단순한 댓글 한마디라도 저에겐 큰 힘이 됩니다! 감사합니다
'알고리즘 > 백준' 카테고리의 다른 글
[C++] 11053번 가장 긴 증가하는 부분 수열 - DP (0) | 2022.09.04 |
---|---|
[C++] 9663번 N-Queen - 브루트포스, 백트래킹 (0) | 2022.09.04 |
[C++] 2407번 조합 - 수학, 조합론, 큰 수 연산 (0) | 2022.09.03 |
[C++] 2263번 트리의 순회 - 트리, 분할 정복, 재귀 (0) | 2022.09.03 |
[C++] 2206번 벽 부수고 이동하기 - 그래프 이론, BFS (0) | 2022.09.03 |