자바 백준 2669번
실버 5
https://www.acmicpc.net/problem/2669
2669번: 직사각형 네개의 합집합의 면적 구하기
평면에 네 개의 직사각형이 놓여 있는데 그 밑변은 모두 가로축에 평행하다. 이 네 개의 직사각형들은 서로 떨어져 있을 수도 있고, 겹쳐 있을 수도 있고, 하나가 다른 하나를 포함할 수도 있으
www.acmicpc.net
문제 보기

분류: 구현
코드 보기
import java.util.Scanner; public class Main { public static void main(String[] args) { // 101x101 크기의 2차원 배열, 좌표는 1부터 시작 int[][] grid = new int[101][101]; // 직사각형 좌표 입력 함수 호출 inputRectangles(grid); // 면적 계산 함수 호출 int area = calculateArea(grid); // 면적 출력 System.out.print(area); } // 직사각형 좌표를 입력받아 해당 부분을 1로 표시하는 함수 private static void inputRectangles(int[][] grid) { Scanner sc = new Scanner(System.in); // 네 개의 직사각형에 대해 반복 for (int i = 0; i < 4; i++) { int x1 = sc.nextInt(); // 왼쪽 아래 꼭짓점 x 좌표 입력 int y1 = sc.nextInt(); // 왼쪽 아래 꼭짓점 y 좌표 입력 int x2 = sc.nextInt(); // 오른쪽 위 꼭짓점 x 좌표 입력 int y2 = sc.nextInt(); // 오른쪽 위 꼭짓점 y 좌표 입력 // 직사각형이 차지하는 부분을 1로 표시 for (int x = x1; x < x2; x++) { for (int y = y1; y < y2; y++) { grid[x][y] = 1; } } } } // 1의 개수를 세어 면적을 계산하는 함수 private static int calculateArea(int[][] grid) { // 면적을 저장할 변수 초기화 int area = 0; // x 좌표에 대해 반복 for (int i = 1; i <= 100; i++) { // y 좌표에 대해 반복 for (int j = 1; j <= 100; j++) { // 해당 좌표가 1인 경우 area 증가 if (grid[i][j] == 1) area++; } } // 계산된 면적 반환 return area; } }
'공부하기 > 백준' 카테고리의 다른 글
[Java] 백준 풀기 3062 - 수 뒤집기 (4) | 2023.11.23 |
---|---|
[Java] 백준 풀기 10829 - 이진수 변환 (2) | 2023.11.22 |
[Java] 백준 풀기 2204 - 도비의 난독증 테스트 (0) | 2023.11.20 |
[Java] 백준 풀기 1198 - 삼각형으로 자르기 (0) | 2023.11.17 |
[Java] 백준 풀기 11722 - 가장 긴 감소하는 부분 수열 (0) | 2023.11.16 |