TIL231124 D05 when

jericho·2023년 11월 24일

TIL

목록 보기
5/62

오늘은 TIL 세션이 있었다. 아직 감을 잡지 못하는 학생들에게 TIL이 무엇인지, 어떻게 작성해야 하는지 기본적인 개념부터 설명해주셨다. 그리고 이를 어떻게 내 발전에 도움이 되도록 사용할 것인지, 주제를 어떻게 잡는게 좋을지 여러 방법을 알려주셨는데, 역시 가장 좋은 주제는 트러블슈팅이다. 어떤 문제가 생겼는지, 원인은 무엇인지, 어떻게 해결했는지, 앞으로 어떻게 개선해야 할지를 적는 것이 매우 가치있는 TIL이 될 것이라고 알려주셨다. 하지만 아직 처음, 온보딩 주차에 있는 우리들은 이렇다할 문제를 겪지 않았기에 현재로서는 개념 정리 정도가 적절할 것 같다.

오늘은 when 문에 대해 알아보았다.
'각도기' 문제가 있다. 주어진 각도가 예각, 직각, 둔각, 평각 중 해당하는 숫자를 반환하는 문제다. 나는 그냥 else if로 풀었는데, when으로 깔끔하게 푼 풀이들이 있었다.

else if 풀이

    fun solution(angle: Int): Int {
        if (angle == 180) return 4
        else if (angle == 90) return 2
        else if (angle < 90) return 1
        return 3
    }

when 풀이

    fun solution(angle: Int): Int =
        when(angle){
            in 1 until 90 -> 1
            90 -> 2
            in 91 until 180 -> 3
            180 -> 4
            else -> 5
        }

when은 switch case 문의 코틀린 버전이다. 그런데 좀 더 자유롭게 활용할 수 있는 장점이 있다.
단순히 값 하나만 비교할 수 있는 것이 아니라 in 문도 적용할 수 있어서 위 풀이와 같이 사용할 수 있다. 그리고 case는 -> 로 대체되어 훨씬 간단하고 가독성이 좋아졌다. default 대신 else도 조건처럼 활용하는 모습도 볼 수 있다.
그리고 아래처럼 when에 조건을 넣지 않고 그대로 바디 블록을 열면 else if문 처럼 사용이 가능하다.

    fun solution(angle: Int) = when {
        (angle in 1..89) -> 1
        (angle == 90) -> 2
        (angle in 91..179) -> 3
        else -> 4
    }

when문은 상당히 아름다운 것 같다.

0개의 댓글