https://www.acmicpc.net/problem/10163
- 입력
N 색종이 개수
왼 위x, 왼 위y, 너비, 높이
색종이가 N개만큼 주어지고, 주어진 색종이를 평면에 붙인 후 각 색종이가 보이는 너비를 구하시오.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int[][] map = new int[1001][1001];
int N = Integer.parseInt(st.nextToken()); // 색종이 개수
for (int i = 1; i <= N; i++) {
st = new StringTokenizer(br.readLine());
int startY = Integer.parseInt(st.nextToken());
int startX = Integer.parseInt(st.nextToken());
int width = Integer.parseInt(st.nextToken());
int height = Integer.parseInt(st.nextToken());
for (int r = startX; r < startX + height; r++) {
for (int c = startY; c < startY + width; c++) {
if (r >= 0 && r < map.length && c >= 0 && c < map[0].length) {
map[r][c] = i;
}
}
}
}
for (int i = 1; i <= N; i++) {
int count = 0;
for (int j = 0; j < map.length; j++) {
for (int k = 0; k < map.length; k++) {
if (map[j][k] == i) {
count++;
}
}
}
System.out.println(count);
}
}
}
단순한 구현 문제이지만 좌표를 일반적인 방법과 조금 다르게 설명하여 오해의 소지가 있습니다.
원래 입력은 위와 같이 주어지는데 헷길리기 때문에 입력을 조금 변경하여서 풀었습니다.
이런식으로 보면 배열에 값을 집어넣을 때 조금 더 편하게 확인이 가능합니다.
저희의 목표는 각 색종이의 넓이입니다.
따라서 저는 각 색종이를 붙일 때마다 배열의 값을 다르게 주었고, 이후 이를 셈하는 방식으로 구현하였습니다.
~~
해당 코드는 에디터가 코드 연습을 위해 직접 작성하였습니다.
혹시 오류가 있거나 더 좋은 코드 방향성을 아시는 분은 댓글로 남겨주시면 감사하겠습니다!
[Baekjoon] 1992 쿼드트리 (S1, 분할정복) - Java (0) | 2023.02.28 |
---|---|
[SWEA] 9229 한빈이 Spot Mart (D3, 조합) - Java (0) | 2023.02.25 |
[Baekjoon] 백준 3040 백설 공주와 일곱 난쟁이 (B2, 조합) - Java (0) | 2023.02.21 |
[SWEA] 1228 암호문1 (D3, 구현) - java (0) | 2023.02.13 |
[SWEA] 1859. 백만 장자 프로젝트 (D2^) - Python (0) | 2022.11.24 |