[백준 | Javascript] 10757

박기영·2022년 6월 27일
0

백준

목록 보기
61/127
post-custom-banner

기본 수학 1. 8단계
10757번. 큰수 A+B

문제

10757번 문제 링크

solution

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

// int형에서 처리할 수 있는 숫자의 범위를 넘기 때문에 연산이 안됨
// BigInt형으로 전환해줘야 (2^53 - 1)보다 큰 정수를 표현할 수 있다.
const A = BigInt(input[0]);
const B = BigInt(input[1]);

// 형 전환을 통해 연산이 가능해졌다.
const result = A + B;

// BigInt형은 숫자 뒤에 n이 붙는 형태로 표현되는데
// toString()을 통해 n을 제거해줘야 원하는 출력 형태를 만들 수 있다.
// n이 제거되기는 하지만 string 타입으로 변환되는다는 점도 알아두자.
console.log(result.toString());

해설

이 문제는 보자마자 BigInt를 사용하겠구나 싶었는데 보기 좋게 오답~
이유는 BigInt를 출력할 때 toString()을 붙여주지 않으면 n이 따라 출력되기 때문이다.
ex) BigInt(1355431346534614646346343146134)
= 1355431346534614646346343146134n
따라서 n을 제거해주면 정답!
참고로, toString()은 괄호 안에 설정한 n진수 형태로 대상 요소를 "문자형"으로 변환해준다. 아무것도 설정 안하면 10진수.
그래서 toString()을 통해 BigInt형을 10진수 형태의 문자열로 바꿀 수 있었던 것!
거듭 강조하지만, 10진수형이 아니라 10진수 "형태"의 "문자열"이라는 것이다.
기본기와 최신 js 문법 공부에 충실한지에 대한 문제였던 것 같다.
참고한 다른 분 풀이
자바스크립트 기본서

profile
나를 믿는 사람들을, 실망시키지 않도록
post-custom-banner

0개의 댓글