Coding - Algo/Java
[백준] 10163번:색종이 (Java 자바)
jainn
2021. 8. 28. 19:08
728x90
문제
https://www.acmicpc.net/problem/10163
10163번: 색종이
평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘
www.acmicpc.net
풀이 및 소스코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
class Main {
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
int[][] arr = new int[1001][1001];
int max_x = 0;
int max_y = 0;
for(int t=1;t<=n;t++) {
st = new StringTokenizer(br.readLine());
int x = Integer.parseInt(st.nextToken());
int y = Integer.parseInt(st.nextToken());
int w = Integer.parseInt(st.nextToken());
int h = Integer.parseInt(st.nextToken());
max_x = Math.max(max_x, x+w);
max_y = Math.max(max_y, y+h);
//이따가 1001칸 다 돌기 싫으니까 색종이 있는 부분만 돌자 !
for(int i=y;i<y+h;i++) {
for(int j=x;j<x+w;j++) {
arr[i][j] = t;
//t로 하면 이후단계에서 색종이가 덮히면서 가려지는 부분을 알아서 없앨 수 있다.
}
}
}
for(int t=1;t<=n;t++) {
int cnt = 0;
for(int i=0;i<max_y;i++ ) {
for(int j=0;j<max_x;j++) {
if(t == arr[i][j]) cnt++;
}
}
System.out.println(cnt);
}
}
}
반응형