[ BOJ / C++ ] 2096번 내려가기

황승환·2021년 11월 14일
0

C++

목록 보기
63/65

파이썬으로 풀었던 문제를 C++로 다시 한번 풀어보았다. 풀이 방법은 파이썬과 같다.
[ BOJ / Python ] 2096번 내려가기

Code

#include <iostream>
#include <algorithm>
using namespace std;

int n;
int maxDP[3], minDP[3], maxTemp[3], minTemp[3];

void Input(){
    cin>>n;
}

void Solution(){
    int num1, num2, num3;
    int maxi=0, mini=9999999;
    for(int i=0; i<n; i++){
        cin>>num1>>num2>>num3;
        for(int j=0; j<3; j++){
            if(j==0){
                maxTemp[j]=num1+max(maxDP[j], maxDP[j+1]);
                minTemp[j]=num1+min(minDP[j], minDP[j+1]);
            }
            if(j==1){
                maxTemp[j]=num2+max(maxDP[j-1], max(maxDP[j], maxDP[j+1]));
                minTemp[j]=num2+min(minDP[j-1], min(minDP[j], minDP[j+1]));
            }
            if(j==2){
                maxTemp[j]=num3+max(maxDP[j-1], maxDP[j]);
                minTemp[j]=num3+min(minDP[j-1], minDP[j]);
            }
        }
        for(int j=0; j<3; j++){
            maxDP[j]=maxTemp[j];
            minDP[j]=minTemp[j];
        }
    }
    for(int i=0; i<3; i++){
        if(maxDP[i]>maxi){
            maxi=maxDP[i];
        }
        if(minDP[i]<mini){
            mini=minDP[i];
        }
    }
    cout<<maxi<<" "<<mini<<endl;
}

int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    Input();
    Solution();
    return 0;
}

profile
꾸준함을 꿈꾸는 SW 전공 학부생의 개발 일기

0개의 댓글