4153번: 직각삼각형
import Foundation
while true {
let inputs = readLine()!.split(separator: " ").map { Double(String($0))! }.sorted()
let a = inputs[0], b = inputs[1], c = inputs[2]
guard a + b + c != 0 else { break }
if pow(a, 2) + pow(b, 2) == pow(c, 2) {
print("right")
} else {
print("wrong")
}
}
- 중학교 때 배웠던 피타고라스 정리가 빛을 발하는 문제입니다.
- 삼각형의 가장 긴 변의 제곱이 다른 두 변의 제곱의 합과 같다면 그 삼각형은 직각삼각형입니다.
- 가장 긴 변을 구하기 위해서 주어진 입력을 정렬했습니다.
- Array의 sorted() 메소드는 기본적으로 오름차순으로 정렬합니다.
- 클로저를 전달해서 다른 방식으로 전달할 수도 있습니다.
- O(nlogn)의 시간 복잡도를 가집니다.
- 제곱을 계산하기 위해 Foundation의 pow 함수를 사용했습니다. Int를 인자로 넣을 수 없고 Double로 캐스팅해서 넣어야 합니다.
- n제곱이 아니라 그냥 제곱 뿐이므로 그냥 곱하기를 사용해도 무방합니다.
Array의 Sorted()
var array = [2, 1, 3]
array.sorted()
array.sorted(by: >)
array.sorted { abs($0) < abs($1) }