Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 오름차순 정렬
- 백준 N과 M 자바
- 스택
- 스프링부트 도커로 배포
- lv2
- 큐
- StringTokenizer
- 프로그래머스 풀이
- 스프링부트 도커
- Queue
- 스프링부트 도커 배포
- SWEA
- Stack
- 프로그래머스 자바
- 삼각형의 완성조건
- 프로그래머스 문자열 정렬
- lv0
- COS Pro
- 자바
- Lv1
- 프로그래머스
- 이진수 변환
- 알고리즘
- java
- Programmers
- index of
- 클라이언트
- 백준
- 버퍼
- 문자열
Archives
- Today
- Total
mun dev
[Programmers] 땅따먹기 자바(Java) 본문
문제설명
땅따먹기 게임을 하려고 합니다. 땅따먹기 게임의 땅(land)은 총 N행 4열로 이루어져 있고, 모든 칸에는 점수가 쓰여 있습니다. 1행부터 땅을 밟으며 한 행씩 내려올 때, 각 행의 4칸 중 한 칸만 밟으면서 내려와야 합니다. 단, 땅따먹기 게임에는 한 행씩 내려올 때, 같은 열을 연속해서 밟을 수 없는 특수 규칙이 있습니다.
예를 들면,
| 1 | 2 | 3 | 5 |
| 5 | 6 | 7 | 8 |
| 4 | 3 | 2 | 1 |
로 땅이 주어졌다면, 1행에서 네번째 칸 (5)를 밟았으면, 2행의 네번째 칸 (8)은 밟을 수 없습니다.
마지막 행까지 모두 내려왔을 때, 얻을 수 있는 점수의 최대값을 return하는 solution 함수를 완성해 주세요. 위 예의 경우, 1행의 네번째 칸 (5), 2행의 세번째 칸 (7), 3행의 첫번째 칸 (4) 땅을 밟아 16점이 최고점이 되므로 16을 return 하면 됩니다.
제한 사항
- 행의 개수 N : 100,000 이하의 자연수
- 열의 개수는 4개이고, 땅(land)은 2차원 배열로 주어집니다.
- 점수 : 100 이하의 자연수
풀이
처음에는 dp를 생각 못하고 완전 탐색으로 풀이했다.
계속 통과를 하지 못하길래 dp를 사용해서 풀이했다.. dp는 해도 해도 너무 어렵다 ,,
통과한 코드 ✅
class Solution {
int solution(int[][] land) {
int answer = 0;
for(int i=1; i<land.length; i++){
land[i][0]+=Math.max(land[i-1][1],Math.max(land[i-1][2],land[i-1][3]));
land[i][1]+=Math.max(land[i-1][0],Math.max(land[i-1][2],land[i-1][3]));
land[i][2]+=Math.max(land[i-1][0],Math.max(land[i-1][1],land[i-1][3]));
land[i][3]+=Math.max(land[i-1][0],Math.max(land[i-1][1],land[i-1][2]));
}
for(int i=0; i<4; i++){
answer=Math.max(answer,land[land.length-1][i]);
}
return answer;
}
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[Programmers] 방문 길이 자바(Java) (1) | 2023.12.23 |
---|---|
[Programmers] PCCE 기출문제 9번 이웃한 칸 자바(Java) (0) | 2023.12.12 |
[Programmers] 더 맵게 자바(Java) (2) | 2023.11.21 |
[Programmers] 모음사전 자바(Java) (0) | 2023.10.30 |
[Programmers] 가장 큰 수 자바(Java) (0) | 2023.09.30 |