백준 1531 투명 JAVA 풀이 (브루트포스, 시뮬레이션)

2026. 4. 19. 21:21·코테(Solved.ac + Programmers)
728x90

🔗 문제 링크

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


📌 문제 개요

N개의 색종이를 도화지 위에 붙인다.
각 색종이는 직사각형 영역을 덮으며, 특정 칸이 M번 초과로 덮이면 보이지 않는다.


보이지 않는 칸의 개수를 구하는 문제이다.


📌 접근 방법

이 문제는 좌표 범위가 크지 않기 때문에
복잡한 알고리즘 없이 2차원 배열을 활용한 완전 탐색으로 해결할 수 있다.

 

각 칸이 몇 번 덮였는지를 직접 기록한 뒤
M보다 큰 칸의 개수를 세면 된다.


📌 핵심 아이디어

  • 2차원 배열을 사용하여 겹침 횟수를 저장
  • 색종이 범위를 돌면서 해당 칸을 +1
  • 최종적으로 M 초과인 칸만 카운트

“각 칸이 몇 번 덮였는지를 직접 세는 문제”


📌 전체 코드

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));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int N = Integer.parseInt(st.nextToken());
        int M = Integer.parseInt(st.nextToken());

        int[][] map = new int[101][101];

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

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

        int count = 0;

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

        System.out.println(count);
    }
}

📌 정리

  • 단순 구현 문제지만 범위 처리 실수하기 쉬움
  • <= 포함 범위 꼭 확인
  • 좌표 문제는 대부분 2차원 배열 시뮬레이션으로 해결 가능
728x90

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

[백준] 트리 순회 JAVA 풀이 (트리, 재귀, DFS)  (0) 2026.04.21
백준 13548 수열과 쿼리 6 JAVA 풀이 (Mo's Algorithm, 오프라인 쿼리)  (0) 2026.04.20
백준 2748 피보나치 수 2 JAVA 풀이 (DP, 반복문, 시간복잡도)  (0) 2026.04.16
백준 9237 이장님 초대 JAVA 풀이 (그리디, 정렬, 시간복잡도)  (0) 2026.04.15
백준 16395 파스칼의 삼각형 JAVA 풀이 (DP, 조합)  (0) 2026.04.14
'코테(Solved.ac + Programmers)' 카테고리의 다른 글
  • [백준] 트리 순회 JAVA 풀이 (트리, 재귀, DFS)
  • 백준 13548 수열과 쿼리 6 JAVA 풀이 (Mo's Algorithm, 오프라인 쿼리)
  • 백준 2748 피보나치 수 2 JAVA 풀이 (DP, 반복문, 시간복잡도)
  • 백준 9237 이장님 초대 JAVA 풀이 (그리디, 정렬, 시간복잡도)
PUSH → MERGE → DEPLOY
PUSH → MERGE → DEPLOY
데이터 흐름과 운영 자동화를 설계하는 백엔드 개발자
  • PUSH → MERGE → DEPLOY
    Coding Dongin
    PUSH → MERGE → DEPLOY
  • 전체
    오늘
    어제
    • MEUN N
      • 코테(Solved.ac + Programmers) N
      • BootCamp(JAVA)
      • JAVA
      • SpringBoot
      • JavaScript
      • JSP
      • DB(SQL)
      • React
      • HTML_CSS
      • jQuery
      • SCSS
      • GSAP
      • 설치 + 꿀팁
      • 정보처리기사 오답노트
      • 정보처리기사 기출문제
  • 블로그 메뉴

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

    • GIT
  • 공지사항

  • 인기 글

  • 태그

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

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.4
PUSH → MERGE → DEPLOY
백준 1531 투명 JAVA 풀이 (브루트포스, 시뮬레이션)
상단으로

티스토리툴바