본문 바로가기

PS/백준

[BOJ] 백준 2166 다각형의 면적 (Swift)

반응형

문제

https://www.acmicpc.net/problem/2166

 

2166번: 다각형의 면적

첫째 줄에 N이 주어진다. 다음 N개의 줄에는 다각형을 이루는 순서대로 N개의 점의 x, y좌표가 주어진다. 좌표값은 절댓값이 100,000을 넘지 않는 정수이다.

www.acmicpc.net

풀이

신발끈 공식을 사용하여 풀이하였습니다.

소스코드

import Foundation
typealias Coord = (x: Int, y: Int)
let n = Int(readLine()!)!
var coords: [Coord] = []
for _ in 0..<n {
let input = readLine()!.split(separator: " ").map { Int($0)! }
let x = input[0], y = input[1]
coords.append((x, y))
}
coords.append(coords.first!)
var up = 0
var down = 0
for i in 0..<n {
up += coords[i].x * coords[i + 1].y
down += coords[i + 1].x * coords[i].y
}
let area = Double(abs(up - down)) / 2
print(String(format: "%.1f", area))

후기

신발끈 공식이라는게 있는지도 몰랐습니다.
공식만 안다면 쉽게 풀 수 있는 문제였습니다.

반응형