안녕하십니까. Eun🦆입니다.
![](https://t1.daumcdn.net/keditor/emoticon/niniz/large/025.gif)
풀이법 입니다.
코딩테스트 연습 - 땅따먹기
땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟
programmers.co.kr
#include <iostream>
#include <vector>
using namespace std;
// 첫 행부터 다음 행의 최대값을 더해 구하려고 했으나 이는 틀리다.
// 왜냐하면 다음 행의 중간값을 더하고 이 다음 행의 최대값을 더하는 경우 더 클 수 있기 때문이다.
// 해결 방안은 다음 행의 값들에 이전 행의 최대값을 더하는 것이다.(같은 열 제외)
// DFS의 경우 시간복잡도로 인해 불가능하다고 한다.
int solution(vector<vector<int> > land)
{
int answer = 0;
for(int y=1;y<land.size();y++)
{
for(int x=0;x<land[0].size();x++)
{
int MAX = 0;
for(int k=0;k<land[0].size();k++)
{
if(k!=x & MAX < land[y-1][k])
{
MAX = land[y-1][k];
}
}
land[y][x] += MAX;
//printf("x=%d,y=%d,land[%d][%d]=%d\n",x,y,y,x,land[y][x]);
if(y==land.size()-1)
{
if(answer < land[y][x])
answer = land[y][x];
}
}
}
return answer;
}
'개발 > Coding Test' 카테고리의 다른 글
[프로그래머스 C++ Lv2] 숫자의 표현 (0) | 2022.06.06 |
---|---|
[프로그래머스 C++ Lv2] 폰켓몬 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 다음 큰 숫자 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 올바른 괄호 (0) | 2022.06.06 |
[프로그래머스 C++ Lv2] 가장 큰 정사각형 찾기 (0) | 2022.06.06 |
댓글