본문 바로가기
Problem Solving/Baekjoon

[백준] 2210 숫자판 점프 - Brute Force / Java

by graycode 2022. 8. 6.

 문제 링크

 

2210번: 숫자판 점프

111111, 111112, 111121, 111211, 111212, 112111, 112121, 121111, 121112, 121211, 121212, 211111, 211121, 212111, 212121 이 가능한 경우들이다.

www.acmicpc.net

 

 풀이 과정

5 * 5 크기의 String 배열 map 에 입력받은 값을 저장하고 

배열을 전체 탐색하여 지정한 시작점의 값과 좌표를 매개 변수로 전달하여 재귀 함수를 실행한다.

 

시작점에서부터 4 방향 탐색을 수행하여 이동할 위치가 배열의 범위 내인지 확인한다.

재귀 호출을 통해 이동을 수행하며 String 형 매개 변수 s 에 이동할 위치의 값을 누적하고,

해당 위치의 좌표와 함께 전달한다.

 

s 의 길이가 6 일시(s.length() == 6) 하나의 경우의 수의 탐색을 완료했으므로,

s 가 이미 탐색한 경우의 수가 아닐 시 (!list.contains(s))

각각의 경우의 수를 저장할 List 객체 list 에 s 를 저장한다.

 

끝으로 서로 다른 여섯 자리의 개수, 즉 list.size() 를 정답으로써 출력한다.

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;

public class Main {

    static String[][] map = new String[5][5];
    static List<String> list = new ArrayList<>();
    static int[] dy = {-1, 1, 0, 0};
    static int[] dx = {0, 0, -1, 1};

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        for (int i = 0; i < 5; i++)
            map[i] = br.readLine().split(" ");

        for (int i = 0; i < 5; i++) {
            for (int j = 0; j < 5; j++)
                recur(map[i][j], i, j);
        }

        bw.write(list.size() + "\n");
        bw.flush();
    }

    private static void recur(String s, int y, int x) {
        if (s.length() == 6) {
            if (!list.contains(s))
                list.add(s);

            return;
        }

        for (int i = 0; i < 4; i++) {
            int ny = y + dy[i];
            int nx = x + dx[i];

            if (ny < 0 || nx < 0 || ny >= 5 || nx >= 5)
                continue;

            recur(s + map[ny][nx], ny, nx);
        }
    }

}

댓글