[JAVA 문제 풀이] 352. 쿼드압축 후 개수 세기

프로그래머스 (68936)
Stupefyee's avatar
Jul 01, 2025
[JAVA 문제 풀이] 352. 쿼드압축 후 개수 세기
notion image
 

내가 작성한 코드

class Solution { public int[] solution(int[][] arr) { int[] answer = new int[2]; // answer[0] = 0의 개수, answer[1] = 1의 개수 zip(arr, 0, 0, arr.length, answer); return answer; } private void zip(int[][] arr, int row, int col, int size, int[] answer) { // 현재 영역이 전부 같은 숫자인지 확인 if (isAllSame(arr, row, col, size)) { answer[arr[row][col]]++; // 0이면 answer[0], 1이면 answer[1] 증가 return; } // 4개로 분할하여 재귀 처리 int newSize = size / 2; zip(arr, row, col, newSize, answer); // 좌상 zip(arr, row, col + newSize, newSize, answer); // 우상 zip(arr, row + newSize, col, newSize, answer); // 좌하 zip(arr, row + newSize, col + newSize, newSize, answer); // 우하 } // 해당 영역이 모두 같은 값인지 확인하는 함수 private boolean isAllSame(int[][] arr, int row, int col, int size) { int value = arr[row][col]; for (int i = row; i < row + size; i++) { for (int j = col; j < col + size; j++) { if (arr[i][j] != value) return false; } } return true; } }
Share article

stupefyee