긴자리 계산
백준 - 긴자리 계산
문제 설명
문제
두 수 A, B를 입력받아, A+B, A-B, A×B를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 A가, 둘째 줄에 B가 주어진다. 각각의 수는 10진수로 1,000자리를 넘지 않으며 양수와 음수가 모두 주어질 수 있다.
출력
첫째 줄에 A+B, 둘째 줄에 A-B, 셋째 줄에 A×B를 출력한다.
각각을 출력할 때, 답이 0인 경우를 제외하고는 0으로 시작하게 해서는 안 된다(1을 01로 출력하면 안 된다는 의미).
예제 입력 1
1
-1
예제 출력 1
0
2
-1
제출
나는 처음에 아래와 같이 코드를 작성하고 제출했다
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().split("\n")
var a = paresInt(input[0])
var b = parseInt(input[1])
console.log(a+b)
console.log(a-b)
console.log(a*b)
근데 틀렸다고 나와서 BigInt를 사용해서 아래와 같이 제출했다
const fs = require('fs')
const input = fs.readFileSync('/dev/stdin').toString().split("\n")
var a = BigInt(input[0])
var b = BigInt(input[1])
console.log(a+b)
console.log(a-b)
console.log(a*b)
근데도 틀렸다고 나왔다
도대체 뭐가 문제지? 아무리 생각해도 알 수가 없었다
내 힘으로 풀지 못하고 구글에 검색할 때마다 현타가 오지만 답답함을 참을 수 없었다
구글에서 검색한 결과 아래와 같은 코드로 제출하니까 맞았다고 나왔다
const fs = require('fs');
const input = fs.readFileSync("/dev/stdin").toString().trim().split("\n").map(BigInt);
let answer = input[0] + input[1] + '\n';
answer += input[0] - input[1] + '\n';
answer += input[0] * input[1];
console.log(answer)
문제부분에 나와있는 숫자 앞에 0이 있으면 안된다는 말이 찝찝했는데 그거 때문이었던것같다
내가 작성한 코드는 숫자앞에 0이 붙나보다
왜 저렇게 앞에 0이 붙는지는 아무리 검색해도 나오지가 않는다
문제를 풀때마다 자괴감이 들지만 새로운 정보를 하나씩 알아가고 있다
완전 바보였다
지난번 문제에서 toString()을 왜하냐고 해놓고 이제야 알았다
내가 직접 노드 파일을 만들고 찍어보았는데 BigInt로 받은건 뒤에 n이 붙어있었다
그래서 toString()를 해주니까 n이 사라졌다
BigInt로 숫자를 변환하면 뒤에 n이 붙는다
그래서 toString()으로 다시 변환시켜 주는것이었다!!!
속이 시원하다~~~
Author And Source
이 문제에 관하여(긴자리 계산), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@qnrl3442/백준-긴자리-계산저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)