Skip to content

Commit 8dba370

Browse files
committed
add PROGRAMMERS-12913
1 parent 567fe84 commit 8dba370

File tree

3 files changed

+76
-0
lines changed

3 files changed

+76
-0
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
| PROGRAMMERS-1844 | [python](programmers/problem1844) | [게임 맵 최단거리 (The Shortest Distance on Game Map)](https://school.programmers.co.kr/learn/courses/30/lessons/1844) |
88
| PROGRAMMERS-12909 :star: | [java](programmers/problem12909) | [올바른 괄호 (A Correct Parentheses)](https://school.programmers.co.kr/learn/courses/30/lessons/12909) |
99
| PROGRAMMERS-12911 | [java](programmers/problem12911) | [다음 큰 숫자 (Next Big Number)](https://school.programmers.co.kr/learn/courses/30/lessons/12911) |
10+
| PROGRAMMERS-12913 | [java](programmers/problem12913) | [땅따먹기 (Hopscotch)](https://school.programmers.co.kr/learn/courses/30/lessons/12913) |
1011
| PROGRAMMERS-12914 | [java](programmers/problem12914) | [멀리 뛰기 (Long Jump)](https://school.programmers.co.kr/learn/courses/30/lessons/12914) |
1112
| PROGRAMMERS-12924 :star: | [java](programmers/problem12924) | [숫자의 표현 (Number Expressions)](https://school.programmers.co.kr/learn/courses/30/lessons/12924) |
1213
| PROGRAMMERS-12927 | [java](programmers/problem12927) | [야근 지수 (Overtime Index)](https://school.programmers.co.kr/learn/courses/30/lessons/12927) |
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
package problem12913;
2+
3+
/**
4+
* DFS solution
5+
* this solution is not accepted because of time limit exceeded
6+
*/
7+
public class Hopscotch_DFS {
8+
public static void main(String[] args) {
9+
final var sol = new Hopscotch_DFS();
10+
final var land = new int[][]{{1, 2, 3, 5}, {5, 6, 7, 8}, {4, 3, 2, 1}};
11+
final var expected = 16;
12+
final var result = sol.solution(land);
13+
System.out.println("expected: " + expected + " result: " + result);
14+
}
15+
16+
public int solution(int[][] land) {
17+
var max = 0;
18+
for (var i = 0; i < land[0].length; i++) {
19+
max = Math.max(max, dfs(land, 0, i, 0));
20+
}
21+
return max;
22+
}
23+
24+
private int dfs(int[][] land, int row, int col, int sum) {
25+
if (row == land.length) {
26+
return sum;
27+
}
28+
var max = 0;
29+
for (var i = 0; i < land[row].length; i++) {
30+
if (i != col) {
31+
max = Math.max(max, dfs(land, row + 1, i, sum + land[row][i]));
32+
}
33+
}
34+
return max;
35+
}
36+
}
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package problem12913;
2+
3+
import java.util.Arrays;
4+
5+
/**
6+
* DP solution
7+
*/
8+
public class Hopscotch_DP {
9+
public static void main(String[] args) {
10+
final var sol = new Hopscotch_DP();
11+
final var land = new int[][]{{1, 2, 3, 5}, {5, 6, 7, 8}, {4, 3, 2, 1}};
12+
final var expected = 16;
13+
final var result = sol.solution(land);
14+
System.out.println("expected: " + expected + " result: " + result);
15+
}
16+
17+
public int solution(int[][] land) {
18+
final var dp = new int[land.length][land[0].length];
19+
// copy first row
20+
System.arraycopy(land[0], 0, dp[0], 0, land[0].length);
21+
22+
// i = row, j and k = col
23+
for (var i = 1; i < land.length; i++) {
24+
for (var j = 0; j < land[i].length; j++) {
25+
for (var k = 0; k < land[i].length; k++) {
26+
if (j != k) {
27+
dp[i][j] = Math.max(dp[i][j], dp[i - 1][k] + land[i][j]);
28+
}
29+
}
30+
}
31+
}
32+
33+
var max = 0;
34+
for (var i = 0; i < land[0].length; i++) {
35+
max = Math.max(max, dp[land.length - 1][i]);
36+
}
37+
return max;
38+
}
39+
}

0 commit comments

Comments
 (0)