Java/코딩테스트

[백준] 2563번: 색종이 (JAVA)

다아빈 2025. 4. 1. 22:54
728x90
반응형

문제: https://www.acmicpc.net/problem/2563

 

문제 접근

처음에는 모든 삼각형의 넓이를 구한 후, 겹치는 부분을 빼주는 식으로 생각했습니다!

근데 코드가 너무 복잡해지고, 머리가 안 돌아가길래 다른 방법을 생각해봤습니다.

 

제가 생각한 방식은 다음과 같습니다:

  1. 2차원 배열을 좌표 평면, 입력값을 색종이의 (x,y) 좌표로 생각
  2. 2차원 배열을 생성하여 0으로 초기화  
  3. 색종이가 없는 부분은 0, 색종이가 있는 부분(좌표)은 1로 생각 ( 1의 개수를 구할 예정 )
  4. 만약 배열의 값이 0이면 sum++;  하고 값을 1로 변경 (10 X 10 반복)

전체 코드

import java.io.*;
 
 public class Main {
     public static void main(String[] args) throws IOException {
         BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
 
         int[][] arr = new int[100][100];
         int sum = 0;
 
         int n = Integer.parseInt(br.readLine()); // 몇 개의 색종이?
 
         for(int i = 0; i < n; i++) {
             String input = br.readLine();
             int x = Integer.parseInt(input.split(" ")[0]);
             int y = Integer.parseInt(input.split(" ")[1]);
 
             for(int j = y; j < y + 10; j++) {
                 for(int k = x; k < x + 10; k++) {
                     if(arr[k][j] == 0) {
                         sum++;
                         arr[k][j] = 1;
                     }
                 }
             }
         }
         bw.write(sum + "\n");
         bw.flush();
     }
 }

의문점?

일단 배열의 크기를 100X100으로 설정했는데.. 사실 적당히 큰 숫자를 넣은 것이거든요 ㅎㅋ..

만약 시작점의 좌표가 91 이상이 되어버리면 오류가 날 거 같은데.. 그래도 통과가 뜨더라구요

혹시라도 100X100으로도 통과한 이유를 아신다면 댓글로 남겨주세요..!!

 

 

부족하지만 읽어주셔서 감사합니다!

728x90
반응형