lmjing   2년 전

바로 아래 코드로 정답이 떴습니다.

import java.util.*;

public class Main {
    static int[][] map;
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = sc.nextInt();
        map = new int[n][n];
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                int input = sc.nextInt();
                if (input == -1) input = 2;
                map[i][j] = input;
            }
        }
        int[] result = getCount(new int[]{0, 0}, n);
        System.out.println(result[2]);
        System.out.println(result[0]);
        System.out.println(result[1]);
    }

    static int[] getCount (int[] s, int n) {
        int[] count = new int[3];
        if (n == 1) {
            count[map[s[0]][s[1]]]++;
            return count;
        }
        int last = 3;
        for (int i = s[0]; i < s[0] + n; i += n / 3) {

            for (int j = s[1]; j < s[1] + n; j += n / 3) {
                int[] result = getCount(new int[]{i, j}, n / 3);
                for (int k = 0; k < 3; k++) {
                    if (result[k] > 0) last = k;
                    count[k] += result[k];
                }
            }
        }
        if (count[last] == 9)
            count[last] = 1;
        return count;
    }
}

여기선

-1 -> 2, 0 -> 0, 1 -> 1로 각각 index를 지정해 count를 세어 출력을 2(-1), 0, 1 순으로 했었는데,

코드가 너무 지저분해서 아래 코드처럼 input + 1로 index를 지정해주고 차례대로 프린트 했습니다.

제 생각대로면 -1 -> 0, 0 -> 1, 1 -> 2를 가르켜 디버깅 할 때도 출력도 0(-1), 1(0), 2(1) 순으로 잘되는데

제출하면 계속 틀렸다고 뜨네요 ㅠㅠㅠㅠㅠㅠ

djm03178   2년 전

둘 다 틀린 코드인데 운 좋게 AC된 것 같습니다.

정답을 받은 코드도 다음과 같은 예에서 오답이 나옵니다.

댓글을 작성하려면 로그인해야 합니다.