문제 (링크)
- 문제 : 각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
- 예각 : 0 < angle < 90
- 직각 : angle = 90
- 둔각 : 90 < angle < 180
- 평각 : angle = 180
- 제한사항
- 0 < angle ≤ 180
- angle은 정수입니다.
풀이 1 > if ... else 구문 사용
func solution(_ angle:Int) -> Int {
guard angle > 0 && angle <= 180 else {
print("'angle' must be an integer greater than 0 and less than or equal to 180.")
return 9
}
if angle > 0 && angle < 90 {
return 1
} else if angle == 90 {
return 2
} else if angle < 180 {
return 3
} else {
return 4
}
}
if else 문으로 무난하게 풀었다.
그런데 'switch' 문으로 작성하면 코드 가독성이 더 높아질 것 같았다!
풀이 2 > switch 구문 사용
import Foundation
func solution(_ angle: Int) -> Int {
guard angle > 0 && angle <= 180 else {
print("'angle' must be an integer greater than 0 and less than or equal to 180.")
return 9
}
switch angle {
case 1..<90:
return 1
case 90:
return 2
case 91..<180:
return 3
case 180:
return 4
default:
return 0
}
}
* Range 표현 방법 ('..<', '...')
<Half-open range operator>
출처: https://developer.apple.com/documentation/swift/comparable/'.._(_:_:)#discussion
여기 case에서 사용된 ' ..< ' operator은 'half-open range operator'로, 시작 값은 포함하고 끝 값은 포함하지 않는다. 수학 기호로 표현하면 [시작 값, 끝 값) 이 될 것이다.
- 문법 : startValue ..< endValue
- 예제 > let range = 1..<5
-> range 는 1, 2, 3, 4
<Closed range operator>
출처: https://developer.apple.com/documentation/swift/comparable/'...(_:_:)
' ... ' operator은 'closed range operator'로, 시작값과 끝 값을 모두 포함한다. => [시작 값, 끝 값]
- 문법 : startValue ... endValue
- 예제 > let range = 1...5
-> range 는 1, 2, 3, 4, 5
풀이 3 > Ternary Conditional Operator 사용
다른 사람들 풀이를 보다가
Ternary Conditional Operator를 활용해서 엄청 간단하게 작성한 것을 발견했다.
import Foundation
func solution(_ angle: Int) -> Int {
guard angle > 0 && angle <= 180 else {
print("'angle' must be an integer greater than 0 and less than or equal to 180.")
return 9
}
return (angle < 90) ? 1 :
(angle == 90) ? 2 :
(angle < 180) ? 3 : 4
}
Ternary Conditional Operator 사용법
Ternary operator는 <if...else> 구문 대신 사용될 수 있는 연산자이다.
3개의 피연산자를 취하므로 3항 연산자(Ternary Conditional Operator)라고 부른다.
- 문법 : ' condition ? expression1 : expression2 '
- 설명 :
- if condition is true, expression1 is executed.
- if condition is false, expression2 is executed.
- 예제
// program to check pass or fail
let marks = 60
// use of ternary operator
let result = (marks >= 40) ? "pass" : "fail"
print("You " + result + " the exam")
(출처: https://www.programiz.com/swift-programming/ternary-conditional-operator)
'Swift > Code Kata (알고리즘)' 카테고리의 다른 글
[Swift|코드카타] (프로그래머스) 입문 #10. 배열의 평균값 - reduce 함수 (0) | 2024.02.07 |
---|---|
[Swift|코드카타] (프로그래머스) 입문 #9. 짝수의 합 (for...in...where) (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #3. 나누기 (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #2. 두 수의 합 (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #1. 두 수의 곱 / +) guard문 작성법 (0) | 2024.02.07 |