public func solution(_ X : Int, _ Y : Int, _ D : Int) -> Int {
Int( ceil( Double(Y - X) / Double(D) ) )
}
Double형으로 타입 변환후 소수점 계산을 통해 거리 이동을 위한 최소 횟수를 구하고, ceil을 이용하여 올림 후 반환을 위해 Int형으로 다시 변환한다.
public func solution(_ X : Int, _ Y : Int, _ D : Int) -> Int {
var result = (Y - X) / D
if (Y - X) % D != 0 {
result += 1
}
return result
}
기본적으로 같은 원리지만 Double 형으로 타입 변환을 사용하지 않는 방법이다. Int로 소수점이 나올 시 나머지가 0으로 떨어지지 않으면 나눴을 때 소수점 자리가 생략되면서 내림이 되기 때문에 1을 더해준다.
Double형은 Int형보다 더욱 자세하게 숫자를 표현할 때 사용되고, 당연히 메모리에 적재될 때 사이즈가 클줄 알았으나.. 혹시 몰라서 검색해보니 Int와 Double은 둘다 64비트로 크기가 같다.
가독성은 풀이 1이 더 좋은 것 같다.
시간복잡도는 풀이 1이 더 나은 것 같다. 나누기 연산을 풀이 2에서는 result 선언과 if문에서 총 두번하고 풀이 1에서는 한번하니까.
공간복잡도는 풀이 1이 더 낫다고 생각한다. 풀이 2에서는 result 변수를 선언한다. 풀이 1은 메서드 내에서 별도로 선언하는 변수가 없다.