728x90
이전의 비슷한 문제들을 IM에서 많이 본 것 같다. IM문제는 대부분 이중 for문과 그 값을 저장하는 문제 위주로 내는 것 같다.
문제 풀이
- 각각의 시작점에서 높이와 너비만큼 이차원 map에 자신의 색종이 넘버를 입력
- 다음 색종이가 겹치게 된다면 그대로 덮어씌운다.
- 색종이 수만큼 map에 다 입력했다면 map [][]에 적힌 번호의 결과 값을 증가시킨다.
전체 코드
더보기
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 {
int n;
int map[][]=new int[102][102];
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
n=Integer.parseInt(br.readLine());
int result[]=new int[n+1];
for(int i=1;i<=n;i++) {
StringTokenizer st=new StringTokenizer(br.readLine());
int x=Integer.parseInt(st.nextToken());
int y=Integer.parseInt(st.nextToken());
int h=Integer.parseInt(st.nextToken());
int w=Integer.parseInt(st.nextToken());
for(int j=x;j<x+h;j++) {
for(int k=y;k<y+w;k++) {
map[j][k]=i;
}
}
}
for(int i=0;i<101;i++) {
for(int j=0;j<101;j++) {
result[map[i][j]]++;
}
}
StringBuilder sb=new StringBuilder();
for(int i=1;i<n;i++) {
sb.append(result[i]);
sb.append("\n");
}
sb.append(result[n]);
System.out.println(sb);
}
}
'IM대비' 카테고리의 다른 글
백준 14696 <딱지놀이> (0) | 2020.09.24 |
---|---|
백준 13300 <방배정> (0) | 2020.09.24 |
백준 2559 <수열> (0) | 2020.09.23 |
백준 2304 <창고 다각형> (0) | 2020.09.22 |
백준 2116 <주사위쌓기> (0) | 2020.09.21 |