Algorithm/๋ฐฑ์ค€

๋ฐฑ์ค€ 1780๋ฒˆ - ์ข…์ด์˜ ๊ฐœ์ˆ˜

giraffe_ 2022. 4. 3. 23:48

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

 

1780๋ฒˆ: ์ข…์ด์˜ ๊ฐœ์ˆ˜

N×Nํฌ๊ธฐ์˜ ํ–‰๋ ฌ๋กœ ํ‘œํ˜„๋˜๋Š” ์ข…์ด๊ฐ€ ์žˆ๋‹ค. ์ข…์ด์˜ ๊ฐ ์นธ์—๋Š” -1, 0, 1 ์ค‘ ํ•˜๋‚˜๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋‹ค. ์šฐ๋ฆฌ๋Š” ์ด ํ–‰๋ ฌ์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ทœ์น™์— ๋”ฐ๋ผ ์ ์ ˆํ•œ ํฌ๊ธฐ๋กœ ์ž๋ฅด๋ ค๊ณ  ํ•œ๋‹ค. ๋งŒ์•ฝ ์ข…์ด๊ฐ€ ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜

www.acmicpc.net

 

 

 

 

 

๋ถ„ํ• ์ •๋ณต&์žฌ๊ท€ ๋ฌธ์ œ์ด๋‹ค. ์ง€๊ธˆ๊นŒ์ง€ ํ’€์—ˆ๋˜ ๋ถ„ํ• ์ •๋ณต ๋ฌธ์ œ ์ค‘์—์„œ๋Š” ์‰ฌ์šด ์ถ•์— ์†ํ•˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค. ์žฌ๊ท€์— ์•ฝํ•ด์„œ ์ซ„์•˜๋Š”๋ฐ ์ƒ๊ฐ๋ณด๋‹ค ๊ธˆ๋ฐฉ ํ’€๋ ธ๋‹ค.

 

 

 

 

 

 

์ข…์ด์˜ ์‹œ์ž‘์ ์˜ ํ–‰ ๋ฒˆํ˜ธ, ์—ด ๋ฒˆํ˜ธ, ์ข…์ด์˜ ํฌ๊ธฐ๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ณด๋‚ด ์ข…์ด๊ฐ€ ๊ฐ™์€ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ๋Š”์ง€ ํ™•์ธํ•œ๋‹ค.

 

์ข…์ด๊ฐ€ ๊ฐ™์€ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์œผ๋ฉด, ํ•ด๋‹น ์ˆ˜์˜ ์นด์šดํ„ฐ๋ฅผ ์˜ฌ๋ฆฌ๊ณ  ์ข…๋ฃŒํ•œ๋‹ค.

๊ฐ™์€ ์ˆ˜๋กœ ์ด๋ฃจ์–ด์ ธ ์žˆ์ง€ ์•Š์œผ๋ฉด, ์žฌ๊ท€๋ฅผ ํ†ตํ•ด ํฌ๊ธฐ๋ฅผ 1/3๋กœ ์ค„์—ฌ 9๊ฐ€์ง€์˜ ์ข…์ด์˜ ์‹œ์ž‘์ ์—์„œ ๋‹ค์‹œ ํƒ์ƒ‰ํ•œ๋‹ค.

 

 

 

 

 

์ฝ”๋“œ

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

public class NumberOfPaper {
	static int[] count;

	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		int N = Integer.parseInt(br.readLine());
		
		int[][] arr = new int[N][N];

		for(int i = 0; i < N; i++) {
			String[] input = br.readLine().split(" ");
			
			for(int j = 0; j < N; j++) {
				arr[i][j] = Integer.parseInt(input[j]);
			}
		}
		
		count = new int[3];
		
		paper(arr, 0, 0, N);
		
		System.out.println(count[0]);
		System.out.println(count[1]);
		System.out.println(count[2]);
	}

	public static void paper(int[][] arr, int x, int y, int n) {
		int num = arr[x][y];
		boolean isSame = true;
		
		for(int i = x; i < x + n; i++) {
			for(int j = y; j < y + n; j++) {
				if(arr[i][j] != num) {
					isSame = false;
					break;
				}
			}
		}
		
		if(isSame) {
			if(num == -1) {
				count[0]++;
			} else if(num == 0) {
				count[1]++;
			} else if(num == 1) {
				count[2]++;
			}
			
			return;
		} else {
			paper(arr, x, y, n / 3);
			paper(arr, x, y + n / 3, n / 3);
			paper(arr, x, y + n / 3 * 2, n / 3);
			paper(arr, x + n / 3, y, n / 3);
			paper(arr, x + n / 3, y + n / 3, n / 3);
			paper(arr, x + n / 3, y + n / 3 * 2, n / 3);
			paper(arr, x + n / 3 * 2, y, n / 3);
			paper(arr, x + n / 3 * 2, y + n / 3, n / 3);
			paper(arr, x + n / 3 * 2, y + n / 3 * 2, n / 3);
		}
		
	}

}

 

 

 

 

 

๊ฒฐ๊ณผ

 

 

์ˆ˜ํ–‰์‹œ๊ฐ„์ด ๊ฝค ํฌ๋‹ค.. ๊ทธ๋ž˜์„œ ๋‚ด๊ฐ€ ๋น„ํšจ์œจ์ ์œผ๋กœ ์ž˜๋ชป ํ’€์—ˆ๋‚˜ ํ•˜๋Š” ์ƒ๊ฐ์ด ๋“ค์—ˆ๋Š”๋ฐ ์ฑ„์ ํ˜„ํ™ฉ์„ ๋ณด๋‹ˆ ๋‹ค๋ฅธ ์‚ฌ๋žŒ๋“ค๋„ ๊ธฐ๋ณธ 1000ms ๋„˜๊ฒŒ ๋‚˜์˜จ๋‹ค. ๋‹คํ–‰์ด๋‹ค๐Ÿ˜…

 

 

 

 

 

์ฐธ๊ณ 

์Šค์Šค๋กœ ํ’€์–ด์„œ ์—†์Œ