(Swift) 백준 4153 직각삼각형

SteadySlower·2022년 5월 22일
0

Coding Test

목록 보기
44/298

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]
    
	// a, b, c가 0 0 0이면 탈출
    guard a + b + c != 0 else { break }

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

Array의 Sorted()

var array = [2, 1, 3]

// 기본적으로 오름차순으로 정렬합니다.
array.sorted() // [1, 2, 3]

// 연산자를 전달해서 내림차순으로 바꿀 수도 있습니다.
array.sorted(by: >) // [3, 2, 1]

// 클로저를 전달할 수도 있습니다.
array.sorted { abs($0) < abs($1) }
	// 절대값 순으로 정렬해라
	// 위의 클로저가 true를 반환하면 $0가 먼저 오고
	// false를 반환하면 $1가 먼저 온다.
profile
백과사전 보다 항해일지(혹은 표류일지)를 지향합니다.

0개의 댓글