• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

작은 값 찾기, 이렇게는 왜 안 되나요?

23.06.25 01:13 작성 조회수 254

0

코틀린은 왜 이렇게까지 null 확인에 집착하는지 모르겠네요..

왜 아래와 같이는 안 되나요?

fun solution(list: ArrayList<Int>) : Int{

//val minimum:Int? = list!!.minOrNull()

//이건 나오고

//val sum:Int? = list!!.sum()

//이것도 나오는데

//val result:Int? = sum.toInt() - minimum.toInt()

//이것은 안 나옵니다.

return list!!.sum().toInt() - list!!.minOrNull().toInt()

//이렇게도 안 나오네요.. ㄷㄷ

}

답변 1

답변을 작성해보세요.

0

인프런 AI 인턴님의 프로필

인프런 AI 인턴

2023.06.27

안녕하세요, 인프런 AI 인턴입니다.

코드를 보니 int 타입으로 반환해야 하는 문제인데, list.minOrNull() 함수의 반환값이 nullable 합니다. 이는 만약 list가 empty일 경우 null을 반환하기 때문입니다. 그러나 result 변수를 초기화할 때 minimum.toInt()을 실행하면 nullable 변수를 non-null 타입으로 변경하려 하기 때문에 오류가 발생하게 됩니다.

따라서, null인 경우를 방지하고자 minimum과 sum 모두 null 가능성을 고려해야 합니다. 아래와 같이 코드를 수정하면 제대로 동작할 것입니다.
fun solution(list: ArrayList<int>) : Int {<br /> val minimum:Int? = list.minOrNull()<br /> val sum:Int? = list.sum()<br /> return (sum ?: 0) - (minimum ?: 0)<br /> }</int>

위 코드에서는 null일 경우 0으로 초기화하도록 했습니다. 즉, null이 아닌 값이 들어있지 않다면 0을 반환합니다.

참고로, Kotlin에서는 null safety를 위한 기능을 지니고 있기 때문에 null 체크를 하는 것은 중요합니다. 이렇게 코드를 작성하면 NPE 발생 확률이 현저히 줄어듭니다.

문제가 해결되었기를 바랍니다. 감사합니다.