[Baekjoon] 10757번 문제
Featured image of post [Baekjoon] 10757번 문제

[Baekjoon] 10757번 문제

백준 알고리즘

문제

image

풀이

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
/*
  [baekjoon / 10757]

  9223372036854775807 9223372036854775808
*/

const fs = require("fs");
let input = fs.readFileSync("./input.txt").toString();
let result = input.split(" ").filter((num) => num !== "");
let num1 = parseInt(result[0]);
let num2 = parseInt(result[1]);

solution(num1, num2);

function solution(param1, param2) {
  console.log(param1 + param2);
}

처음엔 쉽게 정답이 될 줄 알았다..

근데 자꾸 이상한 답이 나오더라?

image

음?…. 뭐야 분명 18446744073709551615이란 값이 나와야하는데 계속 18446744073709552000이 나옴

아ㅋㅋ

결국 한개씩 출력해봄 입력도 이상하게 나오는지

image

음? ㅋㅋ 이건 또 뭐임

찾아보니 Javascript에는 BigInt라는 새로운 데이터형이 존재한다는 것을 알았다. BigInt는 Javascript Number의 최대범위인 2^53 - 1보다 큰 정수를 표현할 수 있다고 한다.

Javascript BigInt

그래서 parseInt()대신 BigInt()로 바꿔서 출력해봤다.

1
2
3
4
...
let num1 = BigInt(result[0]);
let num2 = BigInt(result[1]);
...

image

드디어 숫자가 변하지 않고 정확하게 출력되는 것을 볼 수 있다. 근데, 뒤에 n이라는 문자가 같이 표기되어 나온다?

이건 .toString() 메소드를 쓰면 해결되었다.

image

^오^

다시 두 수의 덧셈을 구하여 출력해보는 걸로 하고, 백준의 입력을 받을 수 있게끔 읽는 파일을 "/dev/stdin"으로 바꿔주자

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
/*
  [baekjoon / 10757]

  9223372036854775807 9223372036854775808
*/

const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString();
let result = input.split(" ").filter((num) => num !== "");
let num1 = BigInt(result[0]);
let num2 = BigInt(result[1]);

solution(num1, num2);

function solution(param1, param2) {
  let result = param1 + param2;
  console.log(result.toString());
}

image

image

해결완료 ✅

Built with Hugo
Theme Stack designed by Jimmy