백준 2669 직사각형 네 개의 합집합의 면적 JAVA 풀이 (브루트포스, 구현, 시간복잡도)

2026. 3. 25. 16:02·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

https://www.acmicpc.net/problem/2669


📌 문제 개요

4개의 직사각형이 주어졌을 때,
이들이 차지하는 **전체 면적(합집합)**을 구하는 문제이다.

 

단, 겹치는 영역은 중복해서 계산하지 않는다.


📌 접근 방법

이 문제는 좌표 계산으로 풀 수도 있지만,
가장 직관적인 방법은 다음과 같다.

 

2차원 배열에 직접 칠하기

  • 100x100 크기의 배열 생성
  • 직사각형 영역을 true로 채움
  • 마지막에 true 개수 세기

📌 핵심 아이디어

겹침 처리

map[x][y] = true;
 

- 이미 true여도 그대로 유지
- 즉, 겹쳐도 자동 처리됨


좌표 범위

for(int x = x1; x < x2; x++)
for(int y = y1; y < y2; y++)
 

- (x2, y2)는 포함 ❌
- 문제에서 면적 기준이라 중요 포인트


📌 전체 코드

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        boolean[][] map = new boolean[101][101];

        for (int i = 0; i < 4; i++){
            StringTokenizer st = new StringTokenizer(br.readLine());
            int x1 = Integer.parseInt(st.nextToken());
            int y1 = Integer.parseInt(st.nextToken());
            int x2 = Integer.parseInt(st.nextToken());
            int y2 = Integer.parseInt(st.nextToken());

            for(int x = x1; x < x2; x++){
                for(int y = y1; y < y2; y++){
                    map[x][y] = true;
                }
            }
        }

        int count = 0;

        for(int i = 0; i <= 100; i++){
            for(int j = 0; j <= 100; j++){
                if(map[i][j]) count++;
            }
        }

        System.out.println(count);
    }
}

 


📌 정리

  • 좌표 문제는 직접 채우기 방식이 가장 안정적
  • 겹침 처리 고민 필요 없음
  • 구현 난이도는 낮지만, 범위 조건이 핵심
728x90

'코테(Solved.ac + Programmers)' 카테고리의 다른 글

백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)  (0) 2026.03.27
백준 9656 돌 게임 2 JAVA 풀이 (게임이론, 시간복잡도)  (0) 2026.03.26
백준 13909 창문 닫기 JAVA 풀이 (수학, O(1))  (0) 2026.03.24
백준 8979 올림픽 JAVA 풀이 (정렬, 구현, 시간복잡도)  (0) 2026.03.23
백준 9093 단어 뒤집기 JAVA 풀이 (문자열, 구현, 시간복잡도)  (0) 2026.03.22
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • 백준 5635 생일 JAVA 풀이 (정렬, 시간복잡도)
  • 백준 9656 돌 게임 2 JAVA 풀이 (게임이론, 시간복잡도)
  • 백준 13909 창문 닫기 JAVA 풀이 (수학, O(1))
  • 백준 8979 올림픽 JAVA 풀이 (정렬, 구현, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN
      • 코테(Solved.ac + Programmers)
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GIT
  • 공지사항

  • 인기 글

  • 태그

    solved.ac
    java
    dp
    level1
    백엔드개발자
    브루트포스
    정처기
    백준
    기출문제
    실기
    알고리즘
    코딩테스트
    배열
    정처기오답노트
    자바
    정보처리기사
    완전탐색
    springboot
    정처기실기
    구현
    정렬
    프로그래머스
    문자열
    Level2
    자료구조
    정보처리기사 실기 기출문제
    수학
    시뮬레이션
    level0
    피보나치
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 2669 직사각형 네 개의 합집합의 면적 JAVA 풀이 (브루트포스, 구현, 시간복잡도)
상단으로

티스토리툴바