Today I Learned

20210811 백준 문제풀이 (입출력과 사칙연산2)

돌맹이시터 2021. 8. 12. 00:53

 

 

 

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

 

Apple Developer Documentation

 

developer.apple.com

 

해당 페이지에 자세하게 나와있다.

 

 

 

 


 

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)

 

그냥...단순한 코드