1780번 - 종이의 개수
바로 아래 코드로 정답이 떴습니다.
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) 순으로 잘되는데
제출하면 계속 틀렸다고 뜨네요 ㅠㅠㅠㅠㅠㅠ
둘 다 틀린 코드인데 운 좋게 AC된 것 같습니다.
정답을 받은 코드도 다음과 같은 예에서 오답이 나옵니다.
댓글을 작성하려면 로그인해야 합니다.
lmjing 5년 전
바로 아래 코드로 정답이 떴습니다.
여기선
-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) 순으로 잘되는데
제출하면 계속 틀렸다고 뜨네요 ㅠㅠㅠㅠㅠㅠ