9번 문제
처음에는 8번문제에서 했던 것처럼
나누기와, 나머지를 구하는 부분에서 Double 자료형을 사용했었는데,
틀렸다고 나왔다..
문제를 다시 한 번 살펴보니,
A/B = A를 B로 나눈 값
이 정확하게 나와야 하는 것이 아니라
몫을 구해야 하는 문제였기 때문에
Int type을 사용해서 몫을 구하고, 나머지도 구하면 되는 단순한 문제였다.
import Foundation
let arr = readLine()!
let arrs = arr.components(separatedBy : " ")
let a = Int(arrs[0])!
let b = Int(arrs[1])!
let c = Double(arrs[0])!
let d = Double(arrs[1])!
print(a+b)
print(a-b)
print(a*b)
//print(c/d)
//print(c.truncatingRemainder(dividingBy: d))
print(a/b)
print(a%b)
위의 코드를 실행했을 때 7 3 을 입력받은 결과이다.
c/d의 결과와 a/b의 결과가 다른 것을 확인할 수 있고, 사실 이 부분때문에 오답이 되었던 것이다.
import Foundation
let arr = readLine()!
let arrs = arr.components(separatedBy : " ")
let a = Int(arrs[0])!
let b = Int(arrs[1])!
let c = Double(arrs[0])!
let d = Double(arrs[1])!
print(a+b)
print(a-b)
print(a*b)
print((c/d).rounded(.towardZero))
print(c.truncatingRemainder(dividingBy: d))
print(a/b)
print(a%b)
위와 같이 코드를 입력하면 floating point가 포함된 결과가 나오므로, Int type으로만 연산했을 때와 결과가 다르다.
이 문제에서 요구하는 정답은 모두 자연수로 출력되어야 했기 때문에
위의 코드 중 c, d를 사용하지 않고 a/b, a%b만 작성해서 출력하면 된다.
하지만 위의 코드를 작성하기 위해
Double type의 사칙연산에서 몫, 나머지를 구하는 방법을 알게 되었다.
https://developer.apple.com/documentation/swift/double/2885641-truncatingremainder
해당 페이지에 자세하게 나와있다.
10번문제
import Foundation
let arr = readLine()!
let arrs = arr.components(separatedBy: " ")
let a = Int(arrs[0])!
let b = Int(arrs[1])!
let c = Int(arrs[2])!
print((a+b)%c)
print(((a%c)+(b%c))%c)
print((a*b)%c)
print(((a%c)*(b%c))%c)
그냥...단순한 코드
'Today I Learned' 카테고리의 다른 글
20210814~20210816 백준 문제풀이 swift (사칙연산 곱셈, if문) (0) | 2021.08.17 |
---|---|
20210812 split vs components 정리 (0) | 2021.08.12 |
20210810 - 백준 문제풀이 (입출력과 사칙연산1) (0) | 2021.08.11 |
20210727 (0) | 2021.07.28 |
20210725 BMI calculator project -4 (0) | 2021.07.26 |