BAEKJOON 2563번: 색종이

Kim Hyen Su·2023년 6월 20일
0

⏲️ 알고리즘

목록 보기
15/95

2563번 문제

문제

입력

첫째 줄에 색종이의 수가 주어진다. 이어 둘째 줄부터 한 줄에 하나씩 색종이를 붙인 위치가 주어진다. 
색종이를 붙인 위치는 두 개의 자연수로 주어지는데 첫 번째 자연수는 색종이의 왼쪽 변과 도화지의 왼쪽 변 사이의 거리이고, 
두 번째 자연수는 색종이의 아래쪽 변과 도화지의 아래쪽 변 사이의 거리이다. 
색종이의 수는 100 이하이며, 색종이가 도화지 밖으로 나가는 경우는 없다.

출력

첫째 줄에 색종이들이 붙은 검은 영역의 넓이를 출력한다.

🗝️포인트

  1. 결과를 나타낼때, 공식을 사용하지 말고 생각하자(컴퓨터 처럼 단순 무식하게)
  2. 1번 과 같은 생각이면, 여기 100 X 100의 도화지는 10,000개의 점을 담은 판이라고 생각하고 좌표부터 10 X 10개의 흑점을 찍는다고 생각하자.
  3. 흰 / 검 -> false / true 요렇게 2개의 값으로 생각해볼 수 있다.
  4. 몇번 겹치든 검은색으로 칠해진 점의 갯수만 새면 된다.
  5. 단순 배열이 아닌 2차원 배열이라는 것을 명심할 것!! (x,y) 좌표!

제출 답안

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 {
    
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int N = Integer.parseInt(br.readLine()), xst_point=0, yst_point=0, area=0;

		StringTokenizer st;

		boolean[][] arr = new boolean[101][101];
		
		for(int i=0; i < N; i++){
			st = new StringTokenizer(br.readLine()," ");
			xst_point = Integer.parseInt(st.nextToken());
			yst_point = Integer.parseInt(st.nextToken());

			for(int j=0; j<10; j++){
				for(int k=0; k<10; k++){
					if(!arr[xst_point+j][yst_point+k]){
						++area;
						arr[xst_point+j][yst_point+k] = true;
					}
				}
			}
		}
		System.out.println(area);
		br.close();
	}
}

참고 포스팅

profile
백엔드 서버 엔지니어

0개의 댓글