<Algorithm> 216. 땅따먹기(Programmers)
by BFine반응형
1. 땅따먹기(Programmers)
사용 알고리즘 : DP
- 문제를 제대로 읽지 않아서 열이 최대 100,000 인줄알고 아무리 생각해도 3중 for문이 나오는데 ... 라는 착각을 했다.....
- 그래서 궁금증을 가지고 해설을 봤는데 3중for문이여서 말이되나 싶었는데 다시 읽어보니 열의 개수는 고정 4개 였다..
문제에 대한 접근&생각
- 임의의 점을 설정 -> 역으로 탐색해서 해당위치의 최댓값을 구함 -> 자기열을 제외한 아래열의 최댓값을 더한다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
|
class Solution {
int solution(int[][] land) {
int n = land.length;
int[][] dp= new int[n+1][4];
/***************************
* DP를 활용하여 거꾸로 임의의 점이
* 최대값이 될 수 있는 경우를 생각한다.
***************************/
for(int i = n-1; i >= 0; i--) {
for(int j = 0; j < 4; j++) {
int max = 0;
for(int u = 0; u < 4; u++) {
if(j!=u) max = Math.max(dp[i+1][u], max);
}
dp[i][j] = max+land[i][j];
// (i,j)를 선택했을때 최대치
}
}
int max = Arrays.stream(dp[0]).max().getAsInt();
return max;
}
}
|
cs |
참고 & 출처
https://programmers.co.kr/learn/courses/18/lessons/846
반응형
'공부(2018~2019) - 스킨변경전 > Algorithm' 카테고리의 다른 글
<Algorithm> 215. 가장 큰 정사각형 찾기(Programmers) (0) | 2019.06.05 |
---|---|
<Algorithm> 214. 줄어들지않아(BOJ) (0) | 2019.06.05 |
<Algorithm> 213. 조짜기(BOJ) (0) | 2019.06.01 |
<Algorithm> 212. 제곱수의 합(BOJ) (0) | 2019.05.31 |
<Algorithm> 211. 동전(BOJ) (0) | 2019.05.31 |
블로그의 정보
57개월 BackEnd
BFine