https://school.programmers.co.kr/learn/courses/30/lessons/12913
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
n행 4열 크기의 2차원 배열이 주어진다.
각 칸에는 모두 숫자가 있으며, 첫번 째 행부터 마지막 행까지 내려오면서 밟아온 숫자를 다 더했을 때 가장 큰 수를 구해야 한다.
이때, 바로 직전에 밟았던 열과 동일한 열을 밟으면 안된다. (ex. 1번 행에서 2번 열을 밟았을 시, 2번 행에서는 2번 열을 제외한 열만 밟을 수 있다.
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int> > land)
{
int answer = 0;
// 반복문 돌면서 이전 행의 최댓값 더해주기(같은 열 제외)
for(int i=1;i<land.size();i++){
land[i][0] += max({land[i-1][1], land[i-1][2], land[i-1][3]});
land[i][1] += max({land[i-1][0], land[i-1][2], land[i-1][3]});
land[i][2] += max({land[i-1][0], land[i-1][1], land[i-1][3]});
land[i][3] += max({land[i-1][0], land[i-1][1], land[i-1][2]});
}
// 위에서 다 더한 후, 마지막 행의 값들 중 가장 큰 값이 정답.
answer = max({land[land.size()-1][0], land[land.size()-1][1],
land[land.size()-1][2] ,land[land.size()-1][3]});
return answer;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
프로그래머스 level 1 - 달리기 경주 (0) | 2023.09.19 |
---|---|
프로그래머스 level 1 - 삼총사 (0) | 2023.07.02 |
프로그래머스 level 2 - 귤 고르기 (0) | 2023.01.09 |
프로그래머스 level 2 - 연속 부분 수열 합의 개수 (0) | 2022.11.21 |
프로그래머스 level 2 - n진수 게임 (0) | 2022.11.21 |