Make Unreal REAL.
article thumbnail
Level 3. 정수 삼각형

 

 

위에서부터 아래로 내려오면서 좌측 부모, 우측 부모 중 큰 값을 더하는 방식이다.

 

그렇다보니 양쪽에서 인덱스 계산이 다소 번거롭다.

 

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int solution(vector<vector<int>> triangle)
{
    int answer = triangle[0][0];

    for (int i = 1; i < triangle.size(); ++i)
    {
        for (unsigned j = 0; j < triangle[i].size(); ++j)
        {
            int l_parent = (1 <= j) ? triangle[i - 1][j - 1] : 0;
            int r_parent = (j < triangle[i - 1].size()) ? triangle[i - 1][j] : 0;

            triangle[i][j] += max(l_parent, r_parent);
            answer = max(triangle[i][j], answer);
        }
    }

    return answer;
}

 

반대로 아래에서부터 위로 더하는 방식으로 인덱스 게산도 편하고 훨씬 간단하다.

 

#include <iostream>
#include <vector>

using namespace std;

int solution(vector<vector<int>> tr)
{
    for (int i = tr.size() - 2; 0 <= i; --i)
        for (int j = 0; j < tr[i].size(); ++j)
            tr[i][j] += (tr[i + 1][j] < tr[i + 1][j + 1]) ? tr[i + 1][j + 1] : tr[i + 1][j];
                
    return tr[0][0];
}

'자료구조 & 알고리즘 > 프로그래머스' 카테고리의 다른 글

Level 3. 베스트앨범  (0) 2023.07.14
Level 3. 이중우선순위큐  (0) 2023.07.13
Level 2. 거리두기 확인하기  (0) 2023.07.11
Level 0. 원소들의 곱과 합  (0) 2023.07.10
Level 2. [3차] 방금그곡  (0) 2023.07.09
profile

Make Unreal REAL.

@diesuki4

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그