내려가기 C++ - 백준 2096

김관중·2024년 2월 6일
0

백준

목록 보기
38/129

https://www.acmicpc.net/problem/2096

이 문제는 dp 문제이다.

처음에는 dp테이블 두개, 값 저장용 arr를 썼더니 MLE가 떠서

다른 방법을 선택했다.

인풋을 받고 바로 사용하는 방법을 선택했다.

코드는 다음과 같다.

#include <stdio.h>
#include <algorithm>
using namespace std;

int n;
int maxdp[3];
int mindp[3];
int maxtmp[3];
int mintmp[3];

int main(){
    scanf("%d",&n);
    for(int i=0;i<3;i++){scanf("%d",&maxdp[i]);mindp[i]=maxdp[i];}
    for(int i=1;i<n;i++){
        for(int j=0;j<3;j++){
            maxtmp[j]=maxdp[j];
            mintmp[j]=mindp[j];
            scanf("%d",&maxdp[j]);
            mindp[j]=maxdp[j];
        }
        maxdp[0]+=max(maxtmp[0],maxtmp[1]);
        maxdp[1]+=max(maxtmp[0],max(maxtmp[2],maxtmp[1]));
        maxdp[2]+=max(maxtmp[1],maxtmp[2]);
        mindp[0]+=min(mintmp[0],mintmp[1]);
        mindp[1]+=min(mintmp[0],min(mintmp[2],mintmp[1]));
        mindp[2]+=min(mintmp[1],mintmp[2]);
    }
    printf("%d %d",max(maxdp[0],max(maxdp[1],maxdp[2])),min(mindp[0],min(mindp[1],mindp[2])));
}
profile
꾸준히 학습하기

0개의 댓글

관련 채용 정보