반응형
츄르사려고 코딩하는 코집사입니다.
1. [백준 알고리즘] 백준 2669번 직사각형 네개의 합집합의 면적 구하기 자바(Java)
1) 문제번호 : 2669번
2) 문제 출처
2. 문제
평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으며, 변이나 꼭짓점이 겹칠 수도 있다.
이 직사각형들이 차지하는 면적을 구하는 프로그램을 작성하시오.
3. 제약사항
-
4. 입력
입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각형의 오른쪽 위 꼭짓점의 x좌표, y좌표이다. 모든 x좌표와 y좌표는 1이상이고 100이하인 정수이다.
5. 출력
첫 줄에 네개의 직사각형이 차지하는 면적을 출력한다.
6. 풀이
- 좌표값을 입력 받아서 해당하는 좌표에 1을 입력한다. 그러면 겹치는 부분에도 결국엔 1이 되는데, 입력값을 다 받은 후에 배열을 전체 탐색하여 1의 개수를 구하면 면적이 된다.
7. 소스 코드
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[][] arr = new int[101][101];
for(int i=0;i<4;i++) {
int x1 = sc.nextInt();
int y1 = sc.nextInt();
int x2 = sc.nextInt();
int y2 = sc.nextInt();
for(int a=y1;a<y2;a++) {
for(int b=x1;b<x2;b++) {
arr[a][b] = 1;
}
}
}
int count = 0;
for(int i=0;i<101;i++) {
for(int j=0;j<101;j++) {
if(arr[i][j]==1) count++;
}
}
System.out.println(count);
}
}
반응형
'알고리즘 > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 백준 2491번 수열 자바(Java) (0) | 2021.02.25 |
---|---|
[백준 알고리즘] 백준 2564번 경비원 자바(Java) (0) | 2021.02.25 |
[백준 알고리즘] 백준 2578번 빙고 자바(Java) (0) | 2021.02.25 |
[백준 알고리즘] 백준 2605번 줄 세우기 자바(Java) (0) | 2021.02.25 |
[백준 알고리즘] 백준 13458번 시험 감독 자바(Java) (0) | 2021.02.25 |
[백준 알고리즘] 백준 8320번 직사각형을 만드는 방법 자바(Java) (0) | 2021.02.23 |
[백준 알고리즘] 백준 17413번 단어 뒤집기 2 자바(Java) (0) | 2021.02.23 |
[백준 알고리즘] 백준 11399번 ATM 자바(Java) (0) | 2021.02.23 |
최근댓글