꿈틀꿈틀 개발일기

20231205 / 두 수의 나눗셈 / Kotlin 강의 필기

by jeongminy

# 코드타카 7번 문제를 풀었다.

https://school.programmers.co.kr/learn/courses/30/lessons/120806

난관1) 실패

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = num1 / num2 * 1000
        return answer
    }
}

난관2) 실패

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        var answer: Int = (num1 / num2).toDouble() * 1000
        return answer
    }
}
도저히 난 이문제를 못풀겠다 싶은 시점이 왔다.
그러다가 문득 책에서 'Kotlin의 버림' 이라는 내용을 본 것 같은 기억이 났다.

 

책을 마구 뒤지다가 아톰9 수타입 65페이지에서 내용을 찾았다.


정수를 다른 정수로 나누면 코틀린은 정수를 돌려준다. 정수 나눗셈에서 나머지를 처리하는 일반적인 방법은 버림(truncation)이다. 버림이라는 말은 '소수점 이하를 잘라내 버린다'라는 뜻이다(따라서 반올림을 하지 않는다.) 그래서 5를 2로 나누면 2를 얻고, 7/10은 0이다. 


따라서 이러한 문제를 피하기 위해서는 계산식의 앞부분에 703.07을 곱해야 한다. 이렇게 하면 계산 결과를 Double로 강제 변환하는 효과가 있다.

(여기서 703.07은 책 내부에서 예제로 나오는 수)

여기서 난 알았다. 숫자를 먼저 곱해주면 해당 문제에서 벗어난다는 것을.
바로 시도해보았다.

 

해결

class Solution {
        fun solution(num1: Int, num2: Int): Int {
            var answer: Int = 1000 * num1 / num2
            return answer
        }
    }
포기하려고 할때 쯤, 내 스스로 해결했다는거에 기뻤다.
다른사람들의 풀이를 추가로 살펴봤다. 이렇게도 풀수 있구나 를 알았다.

 

참고) 다른사람들의 풀이

class Solution {
    fun solution(num1: Int, num2: Int): Int {
        return ((num1.toDouble() / num2.toDouble())* 1000).toInt()
    }
}

 

 

# Kotlin 문법 종합반 강의를 들었다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

한번에 너무 많은 양이 머리에 들어온 것 같다.
머리가 터질 것 같다. 정수리에서 불이 나는 것 같다.
ㅠㅠㅠㅠㅠ

 

블로그의 정보

꿈틀꿈틀 개발일기

jeongminy

활동하기