츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 10163번 색종이 자바(Java)
1) 문제번호 : 10163번
2) 문제 출처
2. 문제
평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘 중 하나이다. 그림-1은 1번, 2번, 3번 세 장의 색종이가 순서대로 놓인 상태를 보여준다.
그림-1
여기에 그림-2에서 보인 것처럼 4번 색종이가 하나 더 놓이면 3번 색종이는 완전히 가려서 보이지 않게 된다. 그리고, 1번 색종이와 2번 색종이는 부분적으로 가려 보이며, 4번 색종이는 완전히 보이게 된다.
그림-2
N장의 색종이가 주어진 위치에 차례로 놓일 경우, 각 색종이가 보이는 부분의 면적을 구하는 프로그램을 작성하시오.
3. 제약사항
-
4. 입력
입력의 첫 번째 줄에는 색종이의 장수를 나타내는 정수 N (1 ≤ N ≤ 100)이 주어진다. 이어서 N장의 색종이에 관한 입력이 각 색종이마다 한 줄씩 차례로 주어진다. 색종이가 놓이는 평면은 가로 최대 101칸, 세로 최대 101칸으로 구성된 격자 모양이다. 격자의 각 칸은 가로, 세로 길이가 1인 면적이 1인 정사각형이다.
편의상 가로 6칸, 세로 6칸으로 이루어진 격자의 예를 들어 설명하면, 각 칸에 표시된 값 (a,b)는 해당 칸의 번호를 나타낸다. 가장 왼쪽 아래의 칸은 (0,0) 가장 오른 쪽 위의 칸은 (5,5)이다.
색종이가 놓인 상태는 가장 왼쪽 아래 칸의 번호와 너비, 높이를 나타내는 네 정수로 표현한다. 예를 들어, 위 그림에서 회색으로 표시된 색종이는 (1,4)가 가장 왼쪽 아래에 있고 너비 3, 높이 2이므로 1 4 3 2로 표현한다. 색종이가 격자 경계 밖으로 나가는 경우는 없다.
5. 출력
입력에서 주어진 순서에 따라 N장의 색종이를 평면에 놓았을 때, 입력에서 주어진 순서대로 각 색종이가 보이는 부분의 면적을 한 줄에 하나씩 하나의 정수로 출력한다. 만약 색종이가 보이지 않는다면 정수 0을 출력한다.
6. 풀이
- 맨 처음 색종이는 1로 색종이의 면적만큼 입력을 하고, 그 다음 색종이는 2로, N까지 입력을 한다.
- 그 후에, 1부터 N까지 배열에서 탐색을 하여 배열에 1,2,N개수가 있다면 count를 하여 출력
7. 소스 코드
import java.util.*;
public class Main {
static int N; //색종이 개수
static int[][] map; // 도화지
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
N = sc.nextInt(); //색종이 개수
map = new int[101][101]; // 도화직 크기 최대 가로, 세로 101칸
for(int tc=1; tc<=N;tc++) {
int a =sc.nextInt(); // X좌표
int b =sc.nextInt(); // Y좌표
int c =sc.nextInt(); // 너비
int d =sc.nextInt(); // 높이
//색종이의 크기만큼 탐색하면서 x,y좌표에 첫 번째 테스트케이스가 1인 경우 1입력 2인 경우 2 입력
for(int i=a;i<a+c;i++) {
for(int j=b;j<b+d;j++) {
map[i][j] = tc;
}
}
}
//테스트케이스가 1부터 N까지 탐색을 하면서 갯수 출력
for(int rep=1;rep<=N;rep++) {
int count=0;
for(int i=0;i<101;i++) {
for(int j=0;j<101;j++) {
if(map[i][j]==rep) count++;
}
}
System.out.println(count);
}
}
}
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 11399번 ATM 자바(Java) (0) | 2021.02.23 |
---|---|
[백준 알고리즘] 백준 2477번 참외밭 자바(Java) (0) | 2021.02.22 |
[백준 알고리즘] 백준 20540번 연길이의 이상형 자바(Java) (0) | 2021.02.21 |
[백준 알고리즘] 백준 13300번 방 배정 자바(Java) (0) | 2021.02.21 |
[백준 알고리즘] 백준 2798번 블랙잭 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 1592번 영식이와 친구들 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 17070번 파이프 옮기기1 자바(Java) (0) | 2021.02.19 |
[백준 알고리즘] 백준 16935번 배열 돌리기3 자바(Java) (0) | 2021.02.19 |
최근댓글