답안 #582482

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
582482 2022-06-23T22:39:55 Z coderInTraining Tracks in the Snow (BOI13_tracks) Java 11
0 / 100
163 ms 12504 KB
import java.util.*;

class Main {
    public static void main (String[]args) {
        Scanner scan = new Scanner (System.in);

        int rows = scan.nextInt();
        int columns = scan.nextInt();

        char [][] grid = new char [rows][columns];

        for (int i = 0; i < rows; i++) {
            String line = scan.next();

            for (int j = 0; j < columns; j++) {
                grid[i][j] = line.charAt(j);
            }
        }

        int [][] distances = new int [rows][columns];

        for (int i = 0; i < rows; i++)  {
            Arrays.fill(distances[i], Integer.MAX_VALUE);
        }

        distances[0][0] = 1;

        Queue <Pair> queue = new LinkedList <Pair>();
        Pair startingPair = new Pair (0, 0);
        queue.add(startingPair);

        while (queue.isEmpty() == false) {
            Pair curPair = queue.poll();
            int cRow = curPair.row;
            int cColumn = curPair.column;
            int curDist = distances[cRow][cColumn];

            char curChar = grid[cRow][cColumn];

            if (cRow - 1 >= 0) {
                if (grid[cRow - 1][cColumn] == curChar) {
                    if (curDist < distances[cRow - 1][cColumn]) {
                        distances[cRow - 1][cColumn] = curDist;
                        Pair addingPair = new Pair (cRow - 1, cColumn);
                        queue.add(addingPair);
                    }
                }
                else {
                    if (curDist + 1 < distances[cRow - 1][cColumn]) {
                        distances[cRow - 1][cColumn] = curDist + 1;
                        Pair addingPair = new Pair (cRow - 1, cColumn);
                        queue.add(addingPair);
                    }
                }
            }

            if (cColumn + 1 < columns) {
                if (grid[cRow][cColumn + 1] == curChar) {
                    if (curDist < distances[cRow][cColumn + 1]) {
                        distances[cRow][cColumn + 1] = curDist;
                        Pair addingPair = new Pair (cRow, cColumn + 1);
                        queue.add(addingPair);
                    }
                }
                else {
                    if (curDist + 1 < distances[cRow][cColumn + 1]) {
                        distances[cRow][cColumn + 1] = curDist + 1;
                        Pair addingPair = new Pair (cRow, cColumn + 1);
                        queue.add(addingPair);
                    }
                }
            }

            if (cRow + 1 < rows) {
                if (grid[cRow + 1][cColumn] == curChar) {
                    if (curDist < distances[cRow + 1][cColumn]) {
                        distances[cRow + 1][cColumn] = curDist;
                        Pair addingPair = new Pair (cRow + 1, cColumn);
                        queue.add(addingPair);
                    }
                }
                else {
                    if (curDist + 1 < distances[cRow + 1][cColumn]) {
                        distances[cRow + 1][cColumn] = curDist + 1;
                        Pair addingPair = new Pair (cRow + 1, cColumn);
                        queue.add(addingPair);
                    }
                }
            }

            if (cColumn - 1 >= 0) {
                if (grid[cRow][cColumn - 1] == curChar) {
                    if (curDist < distances[cRow][cColumn - 1]) {
                        distances[cRow][cColumn - 1] = curDist;
                        Pair addingPair = new Pair (cRow, cColumn - 1);
                        queue.add(addingPair);
                    }
                }
                else {
                    if (curDist + 1 < distances[cRow][cColumn - 1]) {
                        distances[cRow][cColumn - 1] = curDist + 1;
                        Pair addingPair = new Pair (cRow, cColumn - 1);
                        queue.add(addingPair);
                    }
                }
            }
        }

        int maxDist = 0;

        for (int i = 0; i < rows; i++) {
            for (int j = 0; j < columns; j++) {
                maxDist = Math.max(maxDist, distances[i][j]);
            }
        }

        System.out.println(maxDist);
    }

    private static class Pair {
        int row;
        int column;

        public Pair (int row, int column) {
            this.row = row;
            this.column = column;
        }
    }
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 133 ms 12504 KB Execution failed because the return code was nonzero
2 Runtime error 134 ms 12252 KB Execution failed because the return code was nonzero
3 Runtime error 138 ms 12048 KB Execution failed because the return code was nonzero
4 Runtime error 135 ms 12132 KB Execution failed because the return code was nonzero
5 Runtime error 129 ms 12324 KB Execution failed because the return code was nonzero
6 Runtime error 153 ms 12188 KB Execution failed because the return code was nonzero
7 Runtime error 143 ms 12128 KB Execution failed because the return code was nonzero
8 Runtime error 132 ms 12068 KB Execution failed because the return code was nonzero
9 Runtime error 135 ms 12188 KB Execution failed because the return code was nonzero
10 Runtime error 133 ms 12092 KB Execution failed because the return code was nonzero
11 Runtime error 155 ms 12088 KB Execution failed because the return code was nonzero
12 Runtime error 131 ms 12120 KB Execution failed because the return code was nonzero
13 Runtime error 130 ms 12004 KB Execution failed because the return code was nonzero
14 Runtime error 136 ms 12156 KB Execution failed because the return code was nonzero
15 Runtime error 149 ms 11972 KB Execution failed because the return code was nonzero
16 Runtime error 163 ms 12068 KB Execution failed because the return code was nonzero
17 Runtime error 134 ms 12096 KB Execution failed because the return code was nonzero
18 Runtime error 135 ms 11996 KB Execution failed because the return code was nonzero
# 결과 실행 시간 메모리 Grader output
1 Runtime error 143 ms 12056 KB Execution failed because the return code was nonzero
2 Runtime error 149 ms 11996 KB Execution failed because the return code was nonzero
3 Runtime error 141 ms 12068 KB Execution failed because the return code was nonzero
4 Runtime error 134 ms 12008 KB Execution failed because the return code was nonzero
5 Runtime error 136 ms 11880 KB Execution failed because the return code was nonzero
6 Runtime error 131 ms 12156 KB Execution failed because the return code was nonzero
7 Runtime error 133 ms 12144 KB Execution failed because the return code was nonzero
8 Runtime error 148 ms 12004 KB Execution failed because the return code was nonzero
9 Runtime error 138 ms 11896 KB Execution failed because the return code was nonzero
10 Runtime error 132 ms 12092 KB Execution failed because the return code was nonzero
11 Runtime error 133 ms 12092 KB Execution failed because the return code was nonzero
12 Runtime error 149 ms 12136 KB Execution failed because the return code was nonzero
13 Runtime error 135 ms 12264 KB Execution failed because the return code was nonzero
14 Runtime error 137 ms 12172 KB Execution failed because the return code was nonzero
15 Runtime error 135 ms 11952 KB Execution failed because the return code was nonzero
16 Runtime error 139 ms 11988 KB Execution failed because the return code was nonzero
17 Runtime error 136 ms 12156 KB Execution failed because the return code was nonzero
18 Runtime error 137 ms 12020 KB Execution failed because the return code was nonzero
19 Runtime error 134 ms 11908 KB Execution failed because the return code was nonzero
20 Runtime error 139 ms 12040 KB Execution failed because the return code was nonzero
21 Runtime error 145 ms 11856 KB Execution failed because the return code was nonzero
22 Runtime error 135 ms 12084 KB Execution failed because the return code was nonzero
23 Runtime error 132 ms 11752 KB Execution failed because the return code was nonzero
24 Runtime error 133 ms 12084 KB Execution failed because the return code was nonzero
25 Runtime error 138 ms 12220 KB Execution failed because the return code was nonzero
26 Runtime error 138 ms 11976 KB Execution failed because the return code was nonzero
27 Runtime error 131 ms 12064 KB Execution failed because the return code was nonzero
28 Runtime error 132 ms 12036 KB Execution failed because the return code was nonzero
29 Runtime error 138 ms 12164 KB Execution failed because the return code was nonzero
30 Runtime error 142 ms 12224 KB Execution failed because the return code was nonzero
31 Runtime error 134 ms 12192 KB Execution failed because the return code was nonzero
32 Runtime error 129 ms 12376 KB Execution failed because the return code was nonzero