본문 바로가기

IM대비

백준 10163 <색종이>

728x90

이전의 비슷한 문제들을 IM에서 많이 본 것 같다. IM문제는 대부분 이중 for문과 그 값을 저장하는 문제 위주로 내는 것 같다.

 

문제 풀이

  1. 각각의 시작점에서 높이와 너비만큼 이차원 map에 자신의 색종이 넘버를 입력
  2. 다음 색종이가 겹치게 된다면 그대로 덮어씌운다.
  3. 색종이 수만큼 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