π•ƒπ•¦π•„π•šπ•£

γ€ŒβŒ¨οΈα΄„s」PS/λ°±μ€€_μˆ˜ν•™&κ΅¬ν˜„

[Baekjoon/λ°±μ€€][2563][C/C++] 색쒅이

by λ£¨λ°€π•ƒπ•¦π•„π•šπ•£2023. 1. 20.
728x90
λ°˜μ‘ν˜•
γ€Žλͺ©μ°¨γ€
0. κ°œμš”

1. 문제
2. 풀이
3. μ½”λ“œ

0. κ°œμš”

2차원 배열을 μ΄μš©ν•˜λ©΄ μ‰½κ²Œ ν’€λ¦¬μ§€λ§Œ, μ’Œν‘œν‰λ©΄μ„ μ΄μš©ν•˜λ©΄ μƒλ‹Ήνžˆ μ–΄λ €μ›Œμ§€λŠ” λ¬Έμ œμ΄λ‹€. μ²˜μŒμ— μ’Œν‘œν‰λ©΄μœΌλ‘œ ν’€λ €λ‹€κ°€ 이 λ¬Έμ œκ°€ '2차원 λ°°μ—΄ - λ‹¨κ³„λ³„λ‘œ 풀어보기' 에 μ†ν•œ λ¬Έμ œλΌλŠ” 것을 κΉ¨λ‹«κ³ , λ‹€μ‹œ 2차원 λ°°μ—΄λ‘œ ν’€κΈ° μ‹œμž‘ν–ˆλ‹€.

1. 문제

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

 

2563번: 색쒅이

κ°€λ‘œ, μ„Έλ‘œμ˜ 크기가 각각 100인 μ •μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 흰색 도화지가 μžˆλ‹€. 이 도화지 μœ„μ— κ°€λ‘œ, μ„Έλ‘œμ˜ 크기가 각각 10인 μ •μ‚¬κ°ν˜• λͺ¨μ–‘μ˜ 검은색 색쒅이λ₯Ό μƒ‰μ’…μ΄μ˜ λ³€κ³Ό λ„ν™”μ§€μ˜ 변이 ν‰ν–‰ν•˜λ„λ‘

www.acmicpc.net

2. 풀이

100 X 100 짜리 배열을 λ§Œλ“  ν›„, λ°°μ—΄μ˜ 값을 λͺ¨λ‘ 0 = FALSE둜 μ΄ˆκΈ°ν™” ν•œλ‹€. μ΄λ•Œ,

β–  = True = 색칠됨 = 검은 색쒅이 O

β–‘ = False = μƒ‰μΉ μ•ˆλ¨ = 검은 색쒅이 X

라고 μƒκ°ν•˜κ³  배열을 ν•˜λ‚˜ λ‘˜μ”© μΉ ν•΄κ°€λ©΄μ„œ 문제λ₯Ό ν’€λ©΄, μ‰½κ²Œ ν’€λ¦°λ‹€. 

 

예제 1을 그림으둜 λ‚˜νƒ€λ‚΄λ©΄ λ‹€μŒκ³Ό κ°™λ‹€.

Baekjoon/λ°±μ€€ 2563 색쒅이
Baekjoon/λ°±μ€€ 2563 색쒅이

3. μ½”λ“œ

#pragma warning(disable:4996)
#include <stdio.h>
#include <stdbool.h>

int main(int argc, char* argv[]) {
	/* 도화지 : false=0으둜 μ΄ˆκΈ°ν™” */
	bool canvas[100][100] = {};

	/* μž…λ ₯_색쒅이 수=N */
	int N; scanf("%d", &N);

	for (int i = 0; i < N; i++) {
		/* μž…λ ₯_ν–‰μ—΄ μ’Œν‘œ */
		int row, col;
		scanf("%d %d", &row, &col);

		/* μƒ‰μΉ ν•˜κΈ° */
		for (int j = col; j < col + 10; j++)
			for (int k = row; k < row + 10; k++)
				canvas[j][k] = true;
	}

	/* 좜λ ₯ */
	int count = 0;

	for (int i = 0; i < 100; i++)
		for (int j = 0; j < 100; j++)
			if (canvas[i][j] == true) count++;

	printf("%d", count);

	/*
	//debug 
	printf("\n");
	for (int i = 0; i < 100; i++) {
		for (int j = 0; j < 100; j++)
			printf("%d", canvas[i][j]);
		printf("\n");
	}
	*/
		
	/* 마무리 */
	return 0;
}
728x90
λ°˜μ‘ν˜•