입력으로 들어온 직사각형 4개를 좌표에 옮기면 되는 간단한 문제입니다. 좌표평면을 이차원 배열로 구현한 뒤 각 직사각형이 차지하는 영역을 좌표에 표시합니다.
이렇게 하면 겹치는 영역을 복잡하게 계산하지 않고 이차원 배열 전체를 순회하면서 표시된 영역의 갯수만 세면 됩니다.
// 좌표평면 이차원 배열로 구현
var matrix = Array(repeating: Array(repeating: 0, count: 101), count: 101)
// 직사각형이 차지하는 영역 좌표평면에 1로 표시하기
for _ in 0..<4 {
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let (minX, minY, maxX, maxY) = (input[0], input[1], input[2], input[3])
for x in minX..<maxX {
for y in minY..<maxY {
matrix[x][y] = 1
}
}
}
// 1을 모두 세서 더하면 너비가 나온다.
var ans = 0
for x in 0..<101 {
for y in 0..<101 {
ans += matrix[x][y]
}
}
print(ans)