상세 컨텐츠

본문 제목

백준 2096 내려가기 혼내주기

혼내주기

by lazz 2021. 8. 1. 23:06

본문

반응형

 

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]});
}
반응형

관련글 더보기

댓글 영역