250x250
반응형
Notice
Recent Posts
Recent Comments
Link
N
(프로그래머스 c++)땅따먹기 본문
728x90
반응형
DP를 이용하여 문제를 풀었다..!
우선 열의 개수는 무조건 4개이다. 시간은 충분할 것 같다..!
3중 for문을 이용하도록 하자.
i = 1부터 시작하여, i - 1 행의 수를 모두 비교해야 한다.
단, j != k여야 같은 열 번호의 수를 선택하지 않는다.
m은 현재 행의 위치에서 이전 행의 각 열을 더했을 때 가장 큰 값을 저장하는 변수이다.
그리고 이전의 최댓값이 누적이 되므로 마지막 행에서 최댓값만 찾으면 된다..!
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int> > land)
{
int answer = 0, m = 0;
for(int i = 1; i < land.size(); i++)
{
for(int j = 0; j < 4; j++)
{
m = 0;
for(int k = 0; k < 4; k++)
{
if(j != k)
m = max(m, land[i - 1][k]);
}
land[i][j] += m;
}
}
for(int i = 0; i < 4; i++)
answer = max(answer, land[land.size() - 1][i]);
return answer;
}
728x90
반응형
'프로그래머스 알고리즘 > 2단계' 카테고리의 다른 글
(프로그래머스 c++)소수 만들기 (0) | 2020.05.27 |
---|---|
(프로그래머스 c++)다음 큰 숫자 (0) | 2020.05.25 |
(프로그래머스 c++)폰켓몬 (0) | 2020.05.22 |
(프로그래머스 c++)숫자의 표현 (0) | 2020.05.22 |
(프로그래머스 c++)최댓값과 최솟값 (0) | 2020.05.22 |