본문 바로가기

프로그래머스/동적계획법

정수 삼각형

728x90

programmers.co.kr/learn/courses/30/lessons/43105

 

코딩테스트 연습 - 정수 삼각형

[[7], [3, 8], [8, 1, 0], [2, 7, 4, 4], [4, 5, 2, 6, 5]] 30

programmers.co.kr

#include <string>
#include <vector>
#include <cstring>
#include <iostream>
using namespace std;

int solution(vector<vector<int>> triangle) {
    int answer = 0;
    int n = triangle.size();
    int check[500][500];
    memset(check,0,sizeof(check));
    check[0][0] = triangle[0][0];
    

    for(int i=1; i<n; i++){
        for(int j=0; j<=i; j++){
        int first =0;
        if(j>=1){
         first=check[i-1][j-1]+triangle[i][j]; //바로위에서 왼쪽꺼랑 현재 위치꺼랑 더한것
        }
        int second =0;
        if(j<=i-1){
         second = check[i-1][j] + triangle[i][j];//바로 위에꺼랑 현재위치꺼랑 더한것
        }
            check[i][j] = max(first,second);  // 둘중 더 큰 것을 저장, 메모이제이션 기법
            //cout<<check[i][j]<<" ";
          
        }
     //   cout<<endl;
    }
    
    int maxnum =0;
    for(int i=0; i<n; i++){
        maxnum = max(check[n-1][i],maxnum);
    }
    
    answer = maxnum;
    return answer;
}

'프로그래머스 > 동적계획법' 카테고리의 다른 글

가장 긴 팰린드롬  (0) 2021.02.17
풍선 터트리기  (0) 2021.02.05
등굣길  (0) 2021.01.29
N으로 표현  (0) 2021.01.28
땅따먹기  (0) 2021.01.22