뮁이의 개발새발

[JAVA] 백준 2563 색종이 본문

Algorithm

[JAVA] 백준 2563 색종이

뮁뮁이 2021. 8. 27. 02:06

각 x,y 좌표를 받아와서 도화지에 1로 표시해주고, 1인 부분의 넓이를 계산해주면 된다.

주의해야 할 부분은,

만약 도화지를 초과하는 색종이가 있을 경우, 도화지 밖으로 나가는 부분은 빼고 계산해줘야한다는 점!

그래서 색종이의 끝의 x,y 좌표를 받을 newX, newY 변수를 만들어주었고,

x,y 좌표가 90을 초과할 시, 색종이의 길이가 10이므로 도화지 밖을 나갔다고 판단하여

그때의 색종이 끝의 좌표를 도화지의 끝에서 나간부분을 뺀만큼 해주었다.

입력 x,y 좌표부터 newX,newY 좌표까지 1로 바꾸고, 넓이 구해주면 끝

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class bj2563 {
	public static void main(String[] args) throws IOException {
		BufferedReader in = new BufferedReader(new InputStreamReader(System.in));

		int[][] arr = new int[100][100];

		int N = Integer.parseInt(in.readLine());

		StringBuilder sb = new StringBuilder();
//		StringTokenizer st = new StringTokenizer(in.readLine(), " ");
		for (int i = 0; i < N; i++) {
			StringTokenizer st = new StringTokenizer(in.readLine(), " ");
			int X = Integer.parseInt(st.nextToken());
			int Y = Integer.parseInt(st.nextToken());

			int newY = Y + 10;
			int newX = X + 10;

			if (Y > 90) {
				newY = 100 - Y;
			}
			if (X > 90) {
				newX = 100 - X;
			}

			for (int y = Y; y < newY; y++) {
				for (int x = X; x < newX; x++) {
					arr[y][x] = 1;
				}
			}
		}
		int cnt = 0;
		for (int y = 0; y < 100; y++) {
			for (int x = 0; x < 100; x++) {
//				System.out.print(arr[y][x] + " ");
				if (arr[y][x] == 1) {
					cnt++;
				}
			}
//			System.out.println();
		}
		System.out.println(cnt);
	}

}

'Algorithm' 카테고리의 다른 글

[JAVA] 백준 10157 자리배정  (0) 2021.08.28
[JAVA] 백준 2491 수열  (0) 2021.08.27
[JAVA] 백준 10026 적록색약 (DFS)  (0) 2021.08.27
[JAVA] 백준 2605 줄세우기  (0) 2021.08.27
[JAVA] 백준 2309 일곱 난쟁이  (0) 2021.08.27
Comments