반응형
https://www.acmicpc.net/problem/2563
2563번: 색종이
첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변
www.acmicpc.net
어렵게 생각할 필요가 전혀 없는 문제인데 어렵게 생각해서 푸는데 시간이 꽤 오래 걸렸다.
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int paper[100][100] = { 0, };
int n, x, y, count = 0;
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf("%d %d", &x, &y);
for (int j = y; j < y + 10; j++) { //흔히 알고있는 x좌표는 2차원 배열에서 열에 해당 y좌표는 2차원 배열에서 행에 해당
for (int k = x; k < x + 10; k++) {
paper[j][k] = 1;
}
}
}
for (int j = 0; j < 100; j++) {
for (int k = 0; k < 100; k++) {
if (paper[j][k] == 1) {
count++; //어차피 1로 초기화된 것을 count하는것이기 때문에 중복은 없다.
}
}
}
printf("%d",count);
}
전혀 어려울 것이 없는 문제입니다.
총 넓이에서 빼준다는 생각보다는 2차원 배열의 성질을 이용하여 초기 배열의 값을 0으로 정의한 후
색종이가 들어가는 부분의 배열의 인덱스를 1로 초기화시키면 되는 간단한 문제입니다.
모두 초기화 시킨 후 배열의 값이 1인 index를 찾아 count에 1을 더한다면겹치는 부분은 자연히 중복으로 세어지지 않습니다.
2차원 배열의 특성과 행과 열을 이해했다면 쉽게 풀 수 있는 문제였습니다.
반응형
'Baekjoon' 카테고리의 다른 글
[C] 백준 10829번 : 이진수 변환 (0) | 2023.08.10 |
---|---|
[C] 백준 2750번 : 수 정렬하기 (1) | 2023.02.02 |
[C] 백준 2090번 : 골드바흐의 추측 (2) | 2023.01.31 |
[C]백준 2566번 : 최댓값 (0) | 2023.01.29 |
[C] 백준 2738번 : 행렬 덧셈 (2) | 2023.01.27 |