dp + 슬라이딩 윈도우 문제.
나는 좀 디테일이 부족한 것 같다. 처음에 3번이 아니라 n번 읽어서 틀리고 마지막 결과 출력할 때 n+1이 아니라 n-1로 했다가 틀리고... 문제를 꼼꼼히 읽는것만큼 코드도 꼼꼼히 짜는 연습을 해야겠다...
#include <iostream>
#include <algorithm>
using namespace std;
int cache[6][2], arr[3];
int main(){
ios::sync_with_stdio(0); cin.tie(0);
int n; cin >> n;
for(int i = 0; i < 3; ++i){
cin >> cache[i][0];
cache[i+3][0] = cache[i][0];
}
for(int i = 1; i < n; ++i){
cin >> arr[0] >> arr[1] >> arr[2];
cache[0][i%2] = arr[0] + max(cache[0][(i+1)%2], cache[1][(i+1)%2]);
cache[1][i%2] = arr[1] + max({cache[0][(i+1)%2], cache[1][(i+1)%2], cache[2][(i+1)%2]});
cache[2][i%2] = arr[2] + max(cache[1][(i+1)%2], cache[2][(i+1)%2]);
cache[3][i%2] = arr[0] + min(cache[3][(i+1)%2], cache[4][(i+1)%2]);
cache[4][i%2] = arr[1] + min({cache[3][(i+1)%2], cache[4][(i+1)%2], cache[5][(i+1)%2]});
cache[5][i%2] = arr[2] + min(cache[4][(i+1)%2], cache[5][(i+1)%2]);
}
cout << max({cache[0][(n+1)%2], cache[1][(n+1)%2], cache[2][(n+1)%2]}) << " " << min({cache[3][(n+1)%2], cache[4][(n+1)%2], cache[5][(n+1)%2]});
}
백준 20181 꿈틀꿈틀 호석 애벌레 - 효율성 혼내주기 (0) | 2021.08.01 |
---|---|
백준 20167 꿈틀꿈틀 호석 애벌레 - 기능성 혼내주기 (0) | 2021.08.01 |
백준 15732 도토리 숨기기 혼내주기 (0) | 2021.08.01 |
백준 11003 최솟값 찾기 혼내주기 (0) | 2021.08.01 |
백준 1043 거짓말 혼내주기 (0) | 2021.08.01 |
댓글 영역