츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 10163번 색종이 자바(Java)
1) 문제번호 : 10163번
2) 문제 출처
10163번: 색종이
평면에 색깔이 서로 다른 직사각형 모양의 색종이 N장이 하나씩 차례로 놓여진다. 이때 색종이가 비스듬하게 놓이는 경우는 없다. 즉, 모든 색종이의 변은 서로 평행하거나, 서로 수직이거나 둘
www.acmicpc.net
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 |
최근댓글