https://www.acmicpc.net/problem/2210
그래프탐색 + 브루트포스 문제
배열이 5*5로 아주 작아서 아무 최적화도 하지 않았다.
방문 여부 또한, 중복인 칸 방문을 허용하므로 고려하지 않아도 된다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
class Main {
static Set<String> set = new HashSet<>();
static int[][] m;
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
m = new int[5][5];
for (int i = 0; i < 5; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < 5; j++) {
m[i][j] = Integer.parseInt(st.nextToken());
}
}
for (int i = 0; i < 5; i++) {
for (int j = 0; j < 5; j++) {
solve(i, j, 0, String.valueOf(m[i][j]));
}
}
System.out.println(set.size());
}
static void solve(int r, int c, int d, String s) {
if (d == 6) {
set.add(s);
return;
}
if (r - 1 >= 0) {
solve(r - 1, c, d + 1, s + m[r][c]);
}
if (r + 1 < 5) {
solve(r + 1, c, d + 1, s + m[r][c]);
}
if (c - 1 >= 0) {
solve(r, c - 1, d + 1, s + m[r][c]);
}
if (c + 1 < 5) {
solve(r, c + 1, d + 1, s + m[r][c]);
}
}
}
'[백준] PS > Java [실랜디]' 카테고리의 다른 글
[백준 2578] 빙고 - JAVA (0) | 2025.04.26 |
---|---|
[백준 2002] 추월 - JAVA (0) | 2025.04.25 |
[백준 2784] 가로 세로 퍼즐 - JAVA (0) | 2025.04.25 |
[백준 2371] 파일 구별하기 - JAVA (0) | 2025.04.25 |
[백준 3186] 소변기 - JAVA (1) | 2025.04.22 |