[알고리즘] Swift -백준 #4153 (직각삼각형)
2022. 8. 9. 03:42ㆍALGORITHM/Swift
728x90
반응형
문제링크
https://www.acmicpc.net/problem/4153
4153번: 직각삼각형
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
www.acmicpc.net
문제
![](https://blog.kakaocdn.net/dn/dctcN3/btrJjMcief3/kbT3LOnNu9s1FCCBk48v60/img.gif)
과거 이집트인들은 각 변들의 길이가 3, 4, 5인 삼각형이 직각 삼각형인것을 알아냈다. 주어진 세변의 길이로 삼각형이 직각인지 아닌지 구분하시오.
입력
입력은 여러개의 테스트케이스로 주어지며 마지막줄에는 0 0 0이 입력된다. 각 테스트케이스는 모두 30,000보다 작은 양의 정수로 주어지며, 각 입력은 변의 길이를 의미한다.
출력
각 입력에 대해 직각 삼각형이 맞다면 "right", 아니라면 "wrong"을 출력한다.
풀이
while true {
let input = readLine()!.split(separator: " ").map { Int(String($0))! }
let a = input[0]
let b = input[1]
let c = input[2]
if a==0 && b==0 && c==0 {
break
}
var max = a > b ? a : b
max = max > c ? max : c
var result = false
if max == a {
if a*a == b*b + c*c {
result = true
}
} else if max == b {
if b*b == a*a + c*c {
result = true
}
} else {
if c*c == a*a + b*b {
result = true
}
}
print(result ? "right" : "wrong")
}
결과
시간이랑 메모리는 똑같지만 좀 더 간결한 코드 (sorted() 이용)
while true {
let input = readLine()!.split(separator: " ").compactMap{ Int($0) }.sorted()
if input[0]==0 && input[1]==0 && input[2]==0 {
break
}
if input[2]*input[2] == input[1]*input[1] + input[0]*input[0] {
print("right")
} else {
print("wrong")
}
}
728x90
반응형
'ALGORITHM > Swift' 카테고리의 다른 글
[알고리즘] Swift -백준 #2577 (숫자의 개수) (0) | 2022.08.09 |
---|---|
[알고리즘] Swift -백준 #10872 (팩토리얼) (0) | 2022.08.09 |
[알고리즘] Swift -백준 #2444 (별 찍기 -7) (0) | 2022.08.09 |
[알고리즘] Swift -백준 #2439 (별 찍기-2) (0) | 2022.08.08 |
[알고리즘] Swift -백준 #2438 (별 찍기 -1) (0) | 2022.08.08 |