긴자리 계산

2200 단어 백준백준

백준 - 긴자리 계산

문제 설명

문제

두 수 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()으로 다시 변환시켜 주는것이었다!!!

속이 시원하다~~~

좋은 웹페이지 즐겨찾기