본문 바로가기
프로그래밍/백준 알고리즘 코드

[백준] 2563번 JAVA 색종이 - 2차원 배열

by 졸린이 2024. 1. 26.
반응형

1~100까지 좌표에서 n만큼 좌표를 입력받고 좌표는 맨 아래 맨 왼쪽의 좌표를 받는다.

거기서 오른쪽으로 10칸 위로 10칸 정사각형을 n만큼 칠해서 총 칠해진 면적을 더해서 출력한다. (겹친 곳 제외)

100x100 크기의 배열을 만들고 한번 체크된 곳인지 아닌지만 중요하기 때문에 boolean 타입으로 배열을 선언한다.

 

정사각형 개수 n을 입력받고 x y좌표부터 x축은 오른쪽으로 10 y축으로 10칸 반복하면서 true로 체크한다. n만큼 반복하면서 true인 곳은 지나치고 true로 체크할때마다 sum 변수에 1씩 더해준다.

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
import java.util.Scanner;
 
public class Main{
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        
        boolean arr[][] = new boolean[101][101];
        int sum = 0;
        
        int n = sc.nextInt();
        
        for(int i=0; i<n; i++) {
            int x = sc.nextInt();
            int y = sc.nextInt();
            
            for(int j=0; j<10; j++) {
                for(int k=0; k<10; k++) {
                    if(!arr[x+j][y+k]) {
                        arr[x+j][y+k] = true;
                        sum += 1;
                    }
                }
            }
        }
        System.out.println(sum);
    }
}
cs

 

7행 : [101][101] 크기의 배열 선언한다.

100x100으로 선언해도 되지만배열의 주소는 0부터이기 때문에 좌표값을 그대로 사용하려면 햇갈리지 않게 101로 하는게 편하다.

18~20행 : 자바에서 boolean은 false로 초기화되기 때문에 true로 체크되지 않았으면 입력된 좌표값에서 x축 y축으로 10번씩 for문을 돌면서 true로 체크해주고 sum 변수에 1씩 더해준다.

25행 : for문을 다 돌고 출력하면 끝

반응형

댓글