문제
정수 num1과 num2가 매개변수로 주어질 때, num1을 num2로 나눈 값에 1,000을 곱한 후 정수 부분을 return 하도록 soltuion 함수를 완성해주세요.
제한사항
- 0 < num1 ≤ 100
- 0 < num2 ≤ 100
풀이
import Foundation
func solution(_ num1:Int, _ num2:Int) -> Int {
guard (num1 > 0 && num1 <= 100), (num2 > 0 && num2 <= 100) else {
print("num1과 num2는 0초과 100이하여야 합니다.")
return 0
}
var result: Int = Int(Float(num1) / Float(num2) * 1000)
return result
}
코드 리뷰
처음에는 result 부분을
var result: Int = num1 / num2 * 1000 으로 작성했고, 오류가 발생했다. 👎🏻
이 잘못된 코드에 7과 3을 대입하면 결과 값으로 2333이 아닌, 2000이 산출된다.
7 / 3 * 1000
= 2 * 1000
= 2000
이렇게 계산된 것!!
결과값으로 2000이 나온 이유는 Swift에서는
1. 정수끼리 나눗셈을 하면 결과값도 정수로 산출되며,
2. 소수 부분은 '버림'되기 때문이다.
따라서 나눗셈이 제대로 실행되도록 코드를 수정했다.
- num1, num2를 실수로 바꾼 후 나눗셈을 실시 -> Float() 함수 사용
- 결과값을 다시 정수로 변환 -> Int() 함수 사용
var result: Int = Int(Float(num1) / Float(num2) * 1000) 👍🏻
= Int(7.0 / 3.0 * 1000)
= Int(2.33333 * 1000)
= Int (2333.33)
= 2333
'Swift > Code Kata (알고리즘)' 카테고리의 다른 글
[Swift|코드카타] (프로그래머스) 입문 #10. 배열의 평균값 - reduce 함수 (0) | 2024.02.07 |
---|---|
[Swift|코드카타] (프로그래머스) 입문 #9. 짝수의 합 (for...in...where) (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #8. 각도기 (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #2. 두 수의 합 (0) | 2024.02.07 |
[Swift|코드카타] (프로그래머스) 입문 #1. 두 수의 곱 / +) guard문 작성법 (0) | 2024.02.07 |