티스토리 뷰

반응형
백준 2563번 색종이 문제 풀이 정리

🧾 백준 2563번 색종이 문제 풀이 정리




📌 문제 설명

도화지 위에 크기가 10x10인 정사각형 색종이를 여러 장 붙입니다.
색종이들이 서로 겹칠 수 있으며, 도화지의 크기는 100x100입니다.
색종이를 모두 붙인 뒤, 도화지에서 검은색으로 칠해진 영역의 넓이를 구하는 문제입니다.

💡 색종이 한 장이 덮는 면적은 항상 100(=10×10)입니다.
하지만 색종이들이 겹칠 경우는 겹친 부분은 한 번만 세어야 합니다!



📥 입력 형식

  • 첫 줄에 색종이의 수 k (1 ≤ k ≤ 100)가 주어집니다.
  • 다음 k줄에는 각 색종이의 왼쪽 아래 모서리 좌표 (N, M)이 주어집니다.
    • 0 ≤ N, M ≤ 90
    • 색종이는 도화지의 경계를 벗어나지 않습니다.



🎯 목표

색종이들을 도화지 위에 붙였을 때, 겹치는 부분을 제외하고 색종이가 덮는 총 면적(=검은 영역의 넓이)을 구합니다.




💡 아이디어

✅ 1. 도화지 모델링

  • 도화지를 100x100 크기의 2차원 배열로 생각합니다.
  • 각 칸은 0 또는 1로 표시:
    • 0: 아직 색종이가 붙지 않은 칸
    • 1: 색종이가 붙은 칸

✅ 2. 색종이 붙이기

  • 각 색종이는 10x10 크기이므로, 입력으로 받은 (N, M) 좌표를 시작점으로 하여
  • 세로 jN부터 N+10, 가로 iM부터 M+10
  • 해당 범위에 해당하는 arr[j][i]를 1로 바꿉니다.

✅ 3. 넓이 계산

  • 2차원 배열 arr를 전체 순회하면서 1로 되어 있는 칸의 개수를 모두 더하면, 겹침을 고려한 전체 넓이를 알 수 있습니다.



🧑‍💻 코드 설명


# 색종이 수 입력
k = int(input())

# 100x100 도화지 초기화 (모두 0으로)
arr = [[0 for _ in range(100)] for _ in range(100)]

# 색종이 정보 입력 및 도화지에 반영
for _ in range(k):
    N, M = map(int, input().split())
    for j in range(N, N + 10):  # 세로 방향 (행)
        for i in range(M, M + 10):  # 가로 방향 (열)
            arr[j][i] = 1  # 색종이 붙이기

# 색종이로 덮인 면적 계산
sum = 0
for i in range(100):
    for j in range(100):
        if arr[i][j] == 1:
            sum += 1

print(sum)  # 결과 출력



🔍 예제 입력/출력

✅ 입력


3
3 7
15 7
5 2

✅ 출력


260

🧠 설명

  • 각각의 색종이는 100칸을 덮지만, 서로 겹칠 수 있습니다.
  • 실제로 이 예제에서는 3개의 색종이가 일부 겹치기 때문에 300보다 작은 260이 나옵니다.



🎓 쉬운 비유

도화지를 가로세로 1cm짜리 정사각형 타일로 만든 바닥이라고 생각해보세요.
색종이는 10cm x 10cm 매트입니다.
여러 개의 매트를 바닥에 올려두고, 위에서 보았을 때 매트가 깔린 전체 면적을 계산하는 것과 같습니다.
겹쳐서 깔린 부분은 중복 계산하면 안 됩니다!



✅ 마무리 정리

항목 내용
핵심 아이디어 2차원 배열로 도화지를 모델링하여 색종이가 붙은 칸을 체크
시간 복잡도 O(k × 100) → k는 최대 100개, 각 색종이 10x10 반복
공간 복잡도 O(100×100) = 10,000



✍️ 결론

이 문제는 이차원 배열을 다루는 기초 문제로,
좌표를 기반으로 면적을 처리하는 사고 훈련에 좋습니다.
색종이를 일일이 붙이면서 겹침을 고려하고,
그 결과를 배열로 계산한다는 점에서 시뮬레이션 기법의 대표 예시라고 볼 수 있습니다.

✔️ 비슷한 문제를 더 연습하고 싶다면, 좌표 기반 시뮬레이션 문제를 검색해서 풀어보는 걸 추천합니다!



반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/09   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
글 보관함
반응형