๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
Algorithm

[๋ฐฑ์ค€] 2563๋ฒˆ: ์ƒ‰์ข…์ด(์™„์ „ํƒ์ƒ‰, ๊ตฌํ˜„)

by ์ฃผ๋ฐœ2 2020. 3. 4.
๋ฐ˜์‘ํ˜•

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

 

2563๋ฒˆ: ์ƒ‰์ข…์ด

๊ฐ€๋กœ, ์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ 100์ธ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ํฐ์ƒ‰ ๋„ํ™”์ง€๊ฐ€ ์žˆ๋‹ค. ์ด ๋„ํ™”์ง€ ์œ„์— ๊ฐ€๋กœ, ์„ธ๋กœ์˜ ํฌ๊ธฐ๊ฐ€ ๊ฐ๊ฐ 10์ธ ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ๊ฒ€์€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ์ƒ‰์ข…์ด์˜ ๋ณ€๊ณผ ๋„ํ™”์ง€์˜ ๋ณ€์ด ํ‰ํ–‰ํ•˜๋„๋ก ๋ถ™์ธ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์œผ๋กœ ์ƒ‰์ข…์ด๋ฅผ ํ•œ ์žฅ ๋˜๋Š” ์—ฌ๋Ÿฌ ์žฅ ๋ถ™์ธ ํ›„ ์ƒ‰์ข…์ด๊ฐ€ ๋ถ™์€ ๊ฒ€์€ ์˜์—ญ์˜ ๋„“์ด๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค. ์˜ˆ๋ฅผ ๋“ค์–ด ํฐ์ƒ‰ ๋„ํ™”์ง€ ์œ„์— ์„ธ ์žฅ์˜ ๊ฒ€์€์ƒ‰ ์ƒ‰์ข…์ด๋ฅผ ๊ทธ๋ฆผ๊ณผ ๊ฐ™์€ ๋ชจ์–‘์œผ๋กœ ๋ถ™์˜€๋‹ค๋ฉด ๊ฒ€์€์ƒ‰ ์˜์—ญ์˜ ๋„“์ด๋Š” 260์ด ๋œ๋‹ค.

www.acmicpc.net

์ฝ”๋“œ

import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int num = scan.nextInt();	//์ƒ‰์ข…์ด์˜ ์ˆ˜
		int area = 0;
		boolean[][] check = new boolean[101][101];
		for(int tc=0; tc<num; tc++) {
			int x = scan.nextInt();	// ์ƒ‰์ข…์ด์˜ ์ขŒ์ธก ์•„๋ž˜ ๊ผญ์ง“์  ์ขŒํ‘œ
			int y = scan.nextInt();	// ์ƒ‰์ข…์ด์˜ ์ขŒ์ธก ์œ„ ๊ผญ์ง“์  ์ขŒํ‘œ
			for(int i=x; i<x+10; i++) {	// ์ƒ‰์ข…์ด์˜ ๊ฐ€๋กœ, ์„ธ๋กœ ํฌ๊ธฐ๋Š” 10
				for(int j=y; j<y+10; j++) {
					if(check[i][j] == true) { // ์ด์ „์— ์˜ํ•ด ์ด๋ฏธ ์น ํ•œ๊ฒฝ์šฐ => ์ค‘๋ณต๋˜๋ฏ€๋กœ ์ œ๊ฑฐ
						continue;
					}
					check[i][j] = true;	// ๊ฒ€์€์ƒ‰ ์ƒ‰์ข…์ด๋กœ ์ƒ‰์น ํ•˜๊ธฐ
					area ++;
				}
			}
		}
		System.out.println(area);
		scan.close();
	}

}

ํ’€์ด

KOI 2007 ์ดˆ๋“ฑ๋ถ€ ๋ฌธ์ œ,

์ฒ˜์Œ์— ๋ฌธ์ œ๋ฅผ ๋ณด๊ณ , ์–ด๋–ป๊ฒŒ ์ค‘๋ณต๋œ ๋ถ€๋ถ„์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์„์ง€ ์ƒ๊ฐํ•ด๋ดค๋‹ค..

100 x 100 ๋„ํ™”์ง€์˜ ํฌ๊ธฐ์— ์ž…๋ ฅ๋ฐ›๋Š” ์ƒ‰์ข…์ด์˜ ๋„“์ด๋งŒํผ ๋ชจ๋‘ ์ฒดํฌํ•˜๊ณ , ๋งŒ์•ฝ ๊ฒน์น˜๋Š”๊ณณ์€ ์ฒดํฌ๋ฅผ ๋‹ค์‹œ ์ œ๊ฑฐํ•˜๋Š” ์‹์œผ๋กœ ํ•ด๊ฒฐํ–ˆ๋‹ค.

 

๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ 1์‚ฌ๋ถ„๋ฉด์„ ๊ทธ๋Œ€๋กœ 2์ฐจ์› ๋ฐฐ์—ด๋กœ ์ƒ๊ฐํ•˜๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋‹ค.

์ž…๋ ฅ๋ฐ›๋Š” ์ฒซ ๋ฒˆ์งธ ์ž์—ฐ์ˆ˜๋Š” ์ƒ‰์ข…์ด์˜ ์™ผ์ชฝ ๋ณ€๊ณผ ๋„ํ™”์ง€์˜ ์™ผ์ชฝ ๋ณ€ ์‚ฌ์ด์˜ ๊ฑฐ๋ฆฌ   => x์ขŒํ‘œ

์ž…๋ ฅ๋ฐ›๋Š” ๋‘ ๋ฒˆ์งธ ์ž์—ฐ์ˆ˜๋Š” ์ƒ‰์ข…์ด์˜ ์•„๋ž˜์ชฝ ๋ฒฝ๊ณผ ๋„ํ™”์ง€์˜ ์•„๋ž˜์ชฝ ๋ฒฝ ์‚ฌ์ด๊ฑฐ๋ฆฌ => y์ขŒํ‘œ

์ƒ‰์ข…์ด๋Š” ๊ฐ€๋กœ ํฌ๊ธฐ 10์ธ ์ •์‚ฌ๊ฐํ˜•์ด๋ฏ€๋กœ, x ~ x +10 , y ~ y + 10 ๊นŒ์ง€์˜ ๋ชจ๋“  ์ขŒํ‘œ์—๋Œ€ํ•ด checkํ•œ๋‹ค.

๊ทธ ํ›„ ๋ฉด์ ์„ +1์”ฉ ํ•œ๋‹ค.

๊ทธ ํ›„ ๋‹ค์Œ ์ž…๋ ฅ๋ฐ›์€ ์ƒ‰์ข…์ด์— ๋Œ€ํ•ด์„œ๋„ ๋™์ผํ•œ ๊ณผ์ •์„ ์‹œํ–‰ํ•˜๋Š”๋ฐ, ๋งŒ์•ฝ ์ด์ „์— checkํ•œ ๋ถ€๋ถ„์ด๋ฉด false๋ฅผ ํ†ตํ•ด 

check๋ฅผ ์ œ๊ฑฐํ•œ๋‹ค.(์ด์ „์— ๋ฉด์ ์—์„œ +1ํ–ˆ์œผ๋ฏ€๋กœ, ์ด๋•Œ๋Š” ๋ฉด์ ์„ ++ํ•˜์ง€ ์•Š๋Š”๋‹ค.)

๋ฐ˜์‘ํ˜•

๋Œ“๊ธ€