풀이
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 값을 출력하면 직사각형들이 차지하는 면적을 구할 수 있게 된다.