답안 #582481

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
582481 2022-06-23T22:39:16 Z coderInTraining Tracks in the Snow (BOI13_tracks) Java 11
컴파일 오류
0 ms 0 KB
import java.util.*;

public 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;
        }
    }
}

Compilation message

tracks.java:3: error: class Main is public, should be declared in a file named Main.java
public class Main {
       ^
1 error