티스토리 뷰

728x90
반응형
문제 링크

programmers.co.kr/learn/courses/30/lessons/68936

 

코딩테스트 연습 - 쿼드압축 후 개수 세기

[[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]] [4,9] [[1,1,1,1,1,1,1,1],[0,1,1,1,1,1,1,1],[0,0,0,0,1,1,1,1],[0,1,0,0,1,1,1,1],[0,0,0,0,0,0,1,1],[0,0,0,0,0,0,0,1],[0,0,0,0,1,0,0,1],[0,0,0,0,1,1,1,1]] [10,15]

programmers.co.kr

문제 풀이

hoony-devblog.tistory.com/39

 

[ 백준 2630 ] 색종이 만들기 - Java

문제 링크 https://www.acmicpc.net/problem/2630 2630번: 색종이 만들기 첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들..

hoony-devblog.tistory.com

제가 예전에 풀었던 색종이 만들기와 거의똑같은 문제였죠.

 

계속해서 4등분을해서 같은지 비교해가며 풀면 쉽게 풀어낼수 있습니다.

소스 코드
class Solution {
   public static int[] solution(int[][] arr) {
        int[] answer = new int [2];

        String ans = sol(arr, arr.length, 0, 0);
        for (char cha : ans.toCharArray()) answer[cha-'0']++;

        return answer;
    }

	static String sol(int [][] arr, int n , int x , int y) {

		if(test(arr, n, x, y)) {
			return arr[x][y]+"";
		}else {
			return sol(arr, n/2, x, y) +sol(arr, n/2, x, y+n/2) +sol(arr, n/2, x+n/2, y) +sol(arr, n/2, x+n/2, y+n/2);
		}

	}

	static boolean test(int [][] arr, int n , int x , int y) {
		for (int i = x; i < x+n; i++) {
			for (int j = y; j <  y+n; j++) {
				if(arr[x][y]!=arr[i][j]) return false;
			}
		}
		return true;
	}
}
728x90
반응형
250x250
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함