백준 알고리즘 - 코틀린 풀이
https://www.acmicpc.net/problem/5073
5073번: 삼각형과 세 변
각 입력에 맞는 결과 (Equilateral, Isosceles, Scalene, Invalid) 를 출력하시오.
www.acmicpc.net
1. 문제


2. 정답
<kotlin />
fun main() {
while(true) {
val input = readln().split(" ").map{it.toInt()}.sorted()
if (input.count{it == 0} == 3) {
break
} else {
if (input[2] >= input[0] + input[1]) { println("Invalid") }
else {
when(input.count { it == input[1] }) {
3 -> { println("Equilateral") }
2 -> { println("Isosceles") }
1 -> { println("Scalene") }
}
}
}
}
}
3. 풀이
5073번 문제는 삼각형의 세 변의 길이에 따른 분기를 통해 결과를 출력하는 문제입니다.
세 변의 길이 중 가장 긴 변과 나머지 변들을 비교해야 하므로 오름차순 정렬을 해줍니다.
<kotlin />
val input = readln().split(" ").map{it.toInt()}.sorted()
종료 조건인 0 0 0 을 처리 해야 하므로 입력 숫자 중 0이 3개 발견되면 종료하는 조건문을 먼저 추가합니다.
<kotlin />
if (input.count{it == 0} == 3) {
break
}
종료 조건이 아닌 경우엔 오류 조건인 가장 긴 변의 길이가 나머지 두 변의 길이의 합보다 큰 경우를 처리합니다.
<kotlin />
if (input[2] >= input[0] + input[1]) { println("Invalid") }
마지막으로 종료도, 에러도 아닌 일반 경우를 처리합니다.
세 변의 길이를 비교하기 위해 중간 길이의 변을 기준으로 삼고, 그 변과 같은 길이의 변이 몇 개 있는지를 필터링합니다.
<kotlin />
when(input.count { it == input[1] }) {
3 -> { println("Equilateral") }
2 -> { println("Isosceles") }
1 -> { println("Scalene") }
}
3개일때는 정삼각형, 2개일때는 이등변 삼각형, 1개 일때는 일반 삼각형입니다.
감사합니다.
'백준 알고리즘' 카테고리의 다른 글
[백준] 약수(1037번) - 코틀린 풀이 (0) | 2023.10.11 |
---|---|
[백준] 제로(10773번) - 코틀린 풀이 (0) | 2023.10.05 |
[백준] 숫자 카드2(10816번) - 코틀린 풀이 (0) | 2023.10.04 |
[백준] 회사에 있는 사람(7785번) - 코틀린 풀이 (0) | 2023.09.26 |
[백준 알고리즘] 수학은 비대면(19532번) - 코틀린 풀이 (0) | 2023.09.26 |