hye-log

[백준]10163번 색종이(JAVA) 본문

CodingTest/Baekjoon

[백준]10163번 색종이(JAVA)

iihye_ 2023. 8. 7. 20:11

0. 문제 링크

https://www.acmicpc.net/problem/10163

 

10163번: 색종이

평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘

www.acmicpc.net

 

1. 문제 설명

1) N장의 색종이가 차례로 놓일 때 색종이가 보이는 부분의 면적 구하기

 

2. 입출력

// input
2
0 0 10 10
2 2 6 6

// output
64
36

 

3. 코드

import java.util.*;

public class b10163 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int[][] map = new int[1001][1001];
		int N = sc.nextInt(); // 색종이의 장수
		int[] ans = new int[N]; // 색종이의 면적
		
		for(int n = 1; n <= N; n++) { // 색종이의 장수만큼 반복
			int r = sc.nextInt(); // 좌표
			int c = sc.nextInt();
			int h = sc.nextInt(); // 너비
			int w = sc.nextInt(); // 높이
			
			for(int i = r; i < r+h; i++) {
				for(int j = c; j < c+w; j++) {
					map[i][j] = n; // 해당되는 색종이 위치 넣기
				}
			}
		}
		
		for(int i = 0; i < 1001; i++) { // 1000 * 1000 = 1,000,000 (백만 연산 가능)
			for(int j = 0; j < 1001; j++) {
				if(map[i][j] > 0) {
					ans[map[i][j] - 1]++; // 해당되는 색종이 개수 세기
				}
			}
		}
		
		for(int n = 0; n < N; n++) {
			System.out.println(ans[n]); // 출력
		}
	}

}

 

실행 결과

 

4. 회고

1) 색종이를 올릴 때마다 index를 증가시켜 배열의 값으로 저장

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Baekjoon/b10163.java

 

728x90

'CodingTest > Baekjoon' 카테고리의 다른 글

[백준]1012번 유기농 배추(JAVA)  (0) 2023.08.09
[백준]1158번 요세푸스 문제(JAVA)  (0) 2023.08.08
[백준]13300번 방 배정(JAVA)  (0) 2023.08.07
[백준]2493번 탑(JAVA)  (0) 2023.08.07
[백준]2164번 카드2(JAVA)  (0) 2023.08.07
Comments