백준 2563 색종이
문제 정보
- 문제 출처 : 백준 Baekjoon
- 문제 번호 : 2563
- 문제 제목 : 색종이
- 문제 난이도 : 실버5
- 풀이 언어 : Java
문제
가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록 붙인다. 이러한 방식으로 색종이를 한 장 또는 여러 장 붙인 후 색종이가 붙은 검은 영역의 넓이를 구하는 문제
접근
이중 for 문을 활용해 문제를 풀었다.
풀이
- 100×100 크기의 2차원 boolean 배열을 초기화합니다.
- 색종이 개수(n)을 입력 받습니다.
- 각 색종이에 대해 좌표(x, y)를 입력 받고, 해당 위치에 색종이를 붙입니다 (값을 true로 변경).
- 모든 배열 요소를 순회하며 true인 요소의 개수를 세어 면적을 계산합니다.
- 최종 면적을 출력합니다.
후기
2차원 배열 문제를 더 풀어볼 계획이다.
코드
Java
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
boolean[][] paper = new boolean[100][100];
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
int x = sc.nextInt();
int y = sc.nextInt();
for (int j = x; j < x + 10; j++) {
for (int k = y; k < y + 10; k++) {
paper[j][k] = true;
}
}
}
int area = 0;
for (int i = 0; i < 100; i++) {
for (int j = 0; j < 100; j++) {
if (paper[i][j]) {
area++;
}
}
}
System.out.println(area);
}
}
Java