(Swift) 백준 2669 직사각형 네개의 합집합의 면적 구하기

SteadySlower·2022년 8월 27일
0

Coding Test

목록 보기
134/305

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

문제 풀이 아이디어

입력으로 들어온 직사각형 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)
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글