[백준] PS/Java [실랜디]

[백준 2210] 숫자판 점프 - JAVA

SH3542 2025. 4. 25. 21:41

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