문제 : https://www.acmicpc.net/problem/10163
10163번: 색종이
평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘
www.acmicpc.net
문제 요약 : 색종이가 보이는 부분의 면적 출력
| 입력 | 출력 |
| 1 ≤ N(색종이 수) ≤ 100 색종이 가로, 세로 크기 ≤ 1001 N줄의 x좌표 y좌표 너비 높이 |
1번부터 N번까지 각 색종이가 보이는 면적 출력 |
JAVA
소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_10163.java
| 채점 번호 | 아이디 | 문제 번호 | 결과 | 메모리 | 시간 | 언어 | 코드 길이 |
| 30731243 | cbkpar | 10163 | 100점 | 25604KB | 304ms | Java 11 | 902B |
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String args[]) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int n,i,j,k,a,b,c,d;
n = Integer.parseInt(br.readLine());
int[] cnt = new int[n+1];
int[][] map = new int[1001][1001];
for(i=1;i<=n;i++) {
StringTokenizer st = new StringTokenizer(br.readLine());
a = Integer.parseInt(st.nextToken());
b = Integer.parseInt(st.nextToken());
c = Integer.parseInt(st.nextToken());
d = Integer.parseInt(st.nextToken());
for(j=a;j<a+c;j++) for(k=b;k<b+d;k++) map[j][k] = i;
}
for(i=0;i<1001;i++) for(j=0;j<1001;j++) cnt[map[i][j]]++;
for(i=1;i<=n;i++) sb.append(cnt[i]+"\n");
System.out.println(sb);
}
}
N장의 색종이를 각각 N번이라 하고 배열에 각 종이의 번호를 적는다.
그 후에 배열에 적힌 숫자들을 총합하여 출력한다.
예제 )
4
0 2 10 10
7 9 8 4
8 4 10 6
6 0 12 10




첫번째 종이 62 칸
두번째 종이 24 칸
세번째 종이 0 칸
세번째 종이 120 칸
'백준온라인' 카테고리의 다른 글
| [백준온라인] 1269번 대칭 차집합 (0) | 2021.07.09 |
|---|---|
| [백준온라인] 11536번 줄 세우기 (0) | 2021.07.08 |
| [백준온라인] 6965번 Censor (0) | 2021.07.06 |
| [백준온라인] 11652번 카드 (0) | 2021.07.05 |
| [백준온라인] 1855번 암호 (0) | 2021.07.04 |