본문 바로가기

백준 알고리즘/Java 언어

백준 알고리즘 2563번 문제(Java)

<한마디>

'sc.close()' 사용 이유 : 만약 이 코드를 사용하지 않으면 종료된 이후에서 입력 스트림이 실행돼서 '자원 누수' 즉 메모리 자원을 계속 사용해 메모리 공간이 부족하기 떄문에 낭비가 심해진다. 이 코드를 사용하면 입력 스트림이 닫고 나서 프로그램이 종료된 이후에도 유지가 된다.


2563번 문제

이 문제는 전체 도화지에서 검은색 색종이를 붙이고 전체 검은색 색종이의 넓이 구하는 프로그램입니다.

(겹쳐진 부분은 중복 x)

 

2563번 코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
import java.util.*;
public class Backjoon2563 {
 
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        
        int coloredPaperNum = sc.nextInt();    // 색종이 수
        int[][] allPaper = new int[100][100];    // 도화지 크기
        int area = 0;    // 색종이 넓이
        
        // 색종이 x,y 좌표 입력 
        for(int i=0; i < coloredPaperNum ;i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            
            for(int j = x ;j < x + 10 ;j++) {
                for(int k = y; k < y + 10 ;k++) {
                    allPaper[j][k] = 1;    // 한 공간에 넓이가 1이므로 색종이 넓이를 구하기 위해 1 삽입
                }
            }
        }
        
        //    전체 색종이 넗이
        for(int i = 0; i < allPaper.length ;i++) {
            for(int j = 0; j < allPaper.length ;j++) {
                if(allPaper[i][j] == 1) {
                    area++;
                }
            }
        }
        
        System.out.println(area);
        }
}
cs

2D 관점에서 생각해보면 배열의 공간 하나가 넓이로 삽입이 가능하기에 쉽게 표면적 색종이의 넓이를 구할 수 있다.

 

2563 출력결과