엄청난 부자2

1946 단어 백준백준

백준 - 엄청난 부자2

문제 설명

문제

갑부 최백준 조교는 동전을 최소로 바꾸는데 성공했으나 김재홍 조교가 그 돈을 발견해서 최백준 조교에게 그 돈을 나누자고 따진다.

그 사실이 전 우주로 알려지자 우주에 있던 많은 생명체들이 자신들에게 돈을 분배해 달라고 당장 달려오기 시작했다.

프로토스 중앙 우주 정부의 정책인, ‘모든 지적 생명체는 동등하다’라는 규칙에 입각해서 돈을 똑같이 분배하고자 한다.

한 생명체에게 얼마씩 돈을 줄 수 있는가?

또, 생명체들에게 동일하게 분배한 후 남는 돈은 얼마인가?

입력

첫째 줄에는 최백준 조교가 가진 돈 n과 돈을 받으러 온 생명체의 수 m이 주어진다. (1 ≤ m ≤ n ≤ 10^1000, m과 n은 10진수 정수)

출력

첫째 줄에 생명체 하나에게 돌아가는 돈의 양을 출력한다. 그리고 두 번째 줄에는 1원씩 분배할 수 없는 남는 돈을 출력한다.

예제 입력

1000 100

예제 출력

10
0

틀린 제출

나는 지난번에 배운 fs를 이용해서 입력값을 똑같이 받아왔다

그리고 각 변수에 받은 값을 넣어주고, 몫/나머지 연산을 해서 콘솔로 결과를 찍었다

const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().split(' ')

const money = Number(input[0])
const people = Number(input[1])

var count = money / people
var remain = money % people

console.log(count)
console.log(remain)

당연하게도 맞았을 줄 알았지만 틀렸다고 나왔다

한참을 고민했지만 뭐가 틀린지 모르겠어서 결국 구글을 뒤져봤다

맞는 제출

나는 Number를 사용해서 숫자로 변환시켜주었는데 이부분이 틀린것이었다

입력값을 보면 10의 1000승인데 정확히는 모르지만 Number가 수용할 수 있는 범위를 넘었다고 했다

그래서 BigInt라는 것을 이용해서 변환해야한다고 했다

BigInt는 엄청나게 큰 int까지 받을수 있다고 한다

const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().split(" ")

var money = BigInt(input[0])
var people = BigInt(input[1])

var count = (money / people).toString()
var remain = (money % people).toString()

console.log(count)
console.log(remain)

한가지 의문이 드는건 count, remain에 toString()를 다시 해준다

저걸 안하면 틀렸다고 나왔다

아직도 이건 왜 하는건지 모르겠다

좋은 웹페이지 즐겨찾기