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

상은·2022년 2월 16일
0

백준문제

목록 보기
1/12

2669번 문제

풀이

xy = [[0] * 100 for i in range(100)]

for tc in range(4):
    square = list(map(int, input().split()))
    for i in range(square[0],square[2]):
        for j in range(square[1],square[3]):
            xy[i][j] += 1

cnt = 0
for i in range(100):
    for j in range(100):
        if xy[i][j] >= 1 :
            cnt += 1

print(cnt)

주어진 네 개의 직사각형이 차지하는 면적을 출력하는 문제이다.

x좌표와 y좌표가 1이상 100이하인 정수라는 조건이여서, 100 x 100 배열을 xy에 만들어두었다.
입력이 4줄이라고 명시되어 있어서 각 직사각형의 좌표값을 받는 부분을 반복문을 안에 작성했고,각각 좌표값을 하나의 직사각형이라고 생각하고 2중 for문을 x축과 y축의 길이만큼 반복하게 했다. 그리고 xy에 각 좌표값이 들어오면 1을 더해주었다.

이렇게 하면 한 번 이상 들어온 좌표값은 모두 1 이상이 된다.

xy 전체를 훑어보면서 좌표값이 1이상인 값이 있으면 합집합의 면적을 나타낼 cnt 변수에 1을 합산하게 해주었다.

총 합산된 cnt 값을 출력하면 직사각형들이 차지하는 면적을 구할 수 있게 된다.

profile
Be the Best

0개의 댓글

관련 채용 정보