티스토리 뷰

728x90
반응형
문제 링크

https://www.acmicpc.net/problem/2630

 

2630번: 색종이 만들기

첫째 줄에는 전체 종이의 한 변의 길이 N이 주어져 있다. N은 2, 4, 8, 16, 32, 64, 128 중 하나이다. 색종이의 각 가로줄의 정사각형칸들의 색이 윗줄부터 차례로 둘째 줄부터 마지막 줄까지 주어진다.

www.acmicpc.net

문제 풀이

 

소스 코드
import java.util.*;

public class Main {
	static int [][] paper;
	static int ans [] = {0,0};
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int N = sc.nextInt();

		paper = new int[N][N];
		for (int i = 0; i < N; i++) {
			for (int j = 0; j < N; j++) {
				paper[i][j] = sc.nextInt();
			}
		}
		cut(N, 0, 0);
		System.out.println(ans[0]);
		System.out.println(ans[1]);
	}

	public static void cut(int n , int x , int y) {

		if(isSame(n, x, y)) return;

		cut(n/2, x, y);
		cut(n/2, x, y+n/2);
		cut(n/2, x+n/2, y);
		cut(n/2, x+n/2, y+n/2);
	}

	public static boolean isSame(int n , int x , int y) {
		int val = paper[x][y];

		for (int i = x; i < x+n; i++) {
			for (int j = y; j < y+n; j++) {
				if(val != paper[i][j]) return false;
			}
		}
		ans[val]++;
		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
글 보관함