프로그래머스(Programmers)

Level 2 > 땅따먹기

cepiloth 2018. 8. 20. 09:15
반응형

https://programmers.co.kr/learn/courses/30/lessons/12913


1. 문제


2. 알고리즘

키워드 - 다이나믹 프로그래밍


3. 코드


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <iostream>
#include <vector>
using namespace std;
 
int solution(vector<vector<int> > land)
{
    int sol = 0;
    int r = land.size();
    for (int i = 0; i < r; ++i) {
        if (i == 0)
            continue;
        for (int j = 0; j < 4++j) {
            int mx = 0;
            for (int k = 0; k < 4++k) {
                if (j == k) continue;
                mx = max(mx, land[i - 1][k]);   // 자기 위의 값 중 제일 큰 것
            }
            // 현재 i,j 위치에 적산 한다.
            land[i][j] = mx + land[i][j];
        }
    }
    for (int i = 0; i < 4++i) {
        sol = max(sol, land.back()[i]);
    }
    return sol;
}
cs

반응형