본문 바로가기

Programmers/프로그래머스

[Programmers] 땅따먹기

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
27
28
29
30
31
32
33
34
35
#include <iostream>
#include <vector>
#define MAXX 100001
using namespace std;
int sum[100001][4];
int answer = 0;
int max(const int &a, const int &b) {
    if (a > b) return a;
    else return b;
}
 
int solution(vector<vector<int> > land)
{
    // [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
    //바로 이전 행에서 밟은 행을 또 밟을 수 없다.
    int n = land.size();
 
    for (int i = 0; i < 4; i++) {
        sum[0][i] = land[0][i];
    }
     
    for (int i = 1; i < n; i++) {
        for (int j = 0; j < 4; j++) {
           for (int k = 0; k < 4; k++) {
                if (j != k) {
                    //이전에 밟은 칸 빼고 최대값 비교
                    sum[i][j] = max(sum[i][j], sum[i-1][k] + land[i][j]);
                }
           }
        }
    }
    for (int i = 0; i < 4; i++) answer = max(answer, sum[n-1][i]);
    
    return answer;
}

'Programmers > 프로그래머스' 카테고리의 다른 글

[Programmers] 문자열 압축  (0) 2020.04.04
[Programmers] 가장 긴 팰린드롬  (0) 2020.04.03
[Programmers] N-Queen  (0) 2020.04.03
[Programmers] 방문 길이  (0) 2020.04.03
[Programmers] 종이접기  (0) 2020.04.03