본문 바로가기

 𝗔𝗣𝗣𝗟𝗘/ALGORITHM

[내일배움캠프] 데일리 루틴(iOS_3회차) - 두 수의 나눗셈

이미지를 클릭하면 코딩테스트 페이지로 이동합니다

 

내 풀이

func solution(_ num1:Int, _ num2:Int) -> Int {
  return Int((Double(num1) / Double(num2))*1000)
}

 

두 수를 나눈 값에 1000을 곱한 후 정수 부분을 return해야 하기 때문에 부동 소수점 값을 나타내는 데이터 타입 중 하나인 Double을 사용했다.

 

문제를 풀고 나니 Double을 사용하지 않고 문제를 풀 수는 없을까? 라는 생각이 들었다.

 

Double을 사용하지 않는다면, 

// 처음 Double을 사용하지 않고 풀어본 코드
func solution(_ num1: Int, _ num2: Int) -> Int {
    return (num1 / num2) * 1000
}

 

당연하다 싶을 정도로 실패했다.

 

실패 이유에 대해 분석해보니 정수끼리의 나눈셈은 소수 부분이 버려지고, 그 후에 1000을 곱하니 당연히 답이 오답일 수 밖에 없었다. 

func solution(_ num1: Int, _ num2: Int) -> Int {
    return (num1 * 1000) / num2
}

 

그래서 먼저 num1 * 1000을 하고 그 후에 num2로 나누니 정답 처리가 되었다. 

 

 

 

Double이란? 

- 부동 소수점 값을 나타내는 데이터 타입 중 하나

- 부동 소수점은 정수와 달리 소수점 이하의 값을 저장할 수 있는 데이터 타입

- 대부분 프로그래밍 언어에서 기본적으로 Double 타입을 사용

- 정밀도가 중요한 경우에는 명시적으로 Double을 선언하여 사용

 

 

FloatDouble의 차이점 

  Float(단정밀도 부동 소수점) Double(배정밀도 부동 소수점)
정밀도  32비트 부동 소수점 수를 사용
소수점 이하 7자리까지 정밀도 제공
64비트 부동 소수점 수를 사용
소수점 이하 15자리까지 정밀도 제공
범위 (대략) 6자리의 숫자를 표현 (대략) 15자리의 숫자를 표현
용도 메모리를 더 적게 사용하므로 대량의 부동 소수점 연산이 필요한 경우 유용 정밀한 계산이나 더 넓은 범위의 값을 다루어야 하는 경우 사용

 

 

Recent Posts
Visits
Today
Yesterday
Archives
Calendar
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31