본문 바로가기

알고리즘/백준 문제 풀이

[Python] 2669번 직사각형 네개의 합집합의 면적 구하기

728x90

2669번: 직사각형 네개의 합집합의 면적 구하기 (acmicpc.net)

 

2669번: 직사각형 네개의 합집합의 면적 구하기

입력은 네 줄이며, 각 줄은 직사각형의 위치를 나타내는 네 개의 정수로 주어진다. 첫 번째와 두 번째의 정수는 사각형의 왼쪽 아래 꼭짓점의 x좌표, y좌표이고 세 번째와 네 번째의 정수는 사각

www.acmicpc.net


 

22/09/08

 

 

이 문제 또한 브론즈 문제 치고는 독특한 아이디어를 가지고 있다.

 

얼핏 봐서는 기하학 문제처럼 보이지만, 그렇게 풀면 정말 어렵고, 직접 그림을 그림으로써 해결하는 문제이다.


 

문제 접근 방식:

 

 

그냥 직접 그림을 스케치북에 그리듯이 그림으로써 해결한다.

 

좌표를 2차원좌표로 받고 거기에 해당하는 곳을 모두 1로 바꿔주면 구현 끝!

 

어렵게 생각하면 오히려 꼬이는 문제다.


아래는 내가 위의 접근 방식과 같이 작성한 파이썬 코드이다. 더보기를 누르면 확인할 수 있다.

더보기
# 2669번 직사각형 네개의 합집합의 면적 구하기
# 구현
sketch_book = [[0 for _ in range(101)] for _ in range(101)]
for _ in range(4):
    start_x, start_y, end_x, end_y = map(int, input().split())
    for x in range(start_x, end_x):
        for y in range(start_y, end_y):
            sketch_book[x][y] = 1

print(sum([sum(sketch_book[x]) for x in range(101)]))