파이썬으로 풀었던 문제를 C++로 다시 한번 풀어보았다. 풀이 방법은 파이썬과 같다.
[ BOJ / Python ] 2096번 내려가기
#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;
}