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
- 상속
- 순열코드
- 조합 재귀
- parseInt()
- 자바 조합 재귀
- 자바 순열 코드
- 자바
- java 내부 클래스
- jquery 속성선택자
- char to str
- 서로소
- Java
- Interface
- 자바스크립트 이벤트처리
- 알고리즘
- 후위표기
- jquery 이벤트 처리
- 재귀
- 순열 재귀
- str to char array
- 자바스크립트 이벤트중지
- 자바 재귀 조합
- java lambda
- 알고리즘 그래프
- inner class
- jquery dom 계층 선택자
- java Collections.sort()
- jquery 필터선택자
- 재귀함수
- 자바입출력
Archives
- Today
- Total
유블로그
[프로그래머스] 땅따먹기 본문
[프로그래머스] level2 땅따먹기
소요시간 : 45분
아 진짜... level2로 8점 처음으로 받았다 그리고 드디어 프로그래머스 점수가 1300대를 넘었다
감격해서 캡쳐했는데 날렸다 눈물난다.
처음에 N크기 안보고 그냥 dfs문제네 하고 풀었더니 시간초과가 났다.
그래서 N을 봤더니 십만이었다. dfs는 어림도 없었다.
그래서 dp 나 그리디 쪽 일 거라고 생각하고
한참 생각했다.......
아직도 dp 가 익숙하지 않다.. 슬프다
한참 생각하다가 떠올린 방법은,, score 2차원 배열을 만들어서
0행 각 열에 land 점수를 넣어놓고
행을 올리면서 열 4개에 대해 전 행 score 4개와 더해보고 최댓값을 찾는 것이다.
그렇게 하면 마지막 행의 4열 중 제일 큰 값이 정답이 된다.
class Solution {
int solution(int[][] land) {
int N = land.length;
int[][] score = new int[N][4];
for (int j = 0; j < 4; j++) {
score[0][j] = land[0][j];
}
for (int i = 1; i < land.length; i++) {
for (int j = 0; j < 4; j++) {
for (int j2 = 0; j2 < 4; j2++) {
if(j == j2) continue;
score[i][j] = Math.max(score[i][j], score[i-1][j2] + land[i][j]);
}
}
}
int max = 0;
for (int j = 0; j < 4; j++) {
if(max < score[N-1][j]) max = score[N-1][j];
}
return max;
}
}
'알고리즘' 카테고리의 다른 글
[프로그래머스] 이진 변환 반복하기 (0) | 2021.01.20 |
---|---|
[프로그래머스] 숫자의 표현 (0) | 2021.01.20 |
[프로그래머스] 다음 큰 숫자 (0) | 2021.01.19 |
[프로그래머스] 튜플 (0) | 2021.01.18 |
[프로그래머스] 괄호변환 (0) | 2021.01.18 |