내 풀이
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을 선언하여 사용
Float와 Double의 차이점
Float(단정밀도 부동 소수점) | Double(배정밀도 부동 소수점) | |
정밀도 | 32비트 부동 소수점 수를 사용 소수점 이하 7자리까지 정밀도 제공 |
64비트 부동 소수점 수를 사용 소수점 이하 15자리까지 정밀도 제공 |
범위 | (대략) 6자리의 숫자를 표현 | (대략) 15자리의 숫자를 표현 |
용도 | 메모리를 더 적게 사용하므로 대량의 부동 소수점 연산이 필요한 경우 유용 | 정밀한 계산이나 더 넓은 범위의 값을 다루어야 하는 경우 사용 |
' 𝗔𝗣𝗣𝗟𝗘 > ALGORITHM' 카테고리의 다른 글
[내일배움캠프] 데일리 루틴(iOS_3회차) - 문자열을 정수로 바꾸기 (0) | 2024.02.01 |
---|---|
[내일배움캠프] 데일리 루틴(iOS_3회차) - 자연수 뒤집어 배열로 만들기 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 배열의 평균값 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - 짝수의 합 (0) | 2024.01.31 |
[내일배움캠프] 데일리 루틴(iOS_3회차) - x만큼 간격이 있는 n개의 숫자 (0) | 2024.01.30 |