[백준/BOJ] 24266번 알고리즘 수업 - 알고리즘의 수행 시간 5 (Javascript / Node js)

2023. 9. 9. 14:03코딩 테스트 (BOJ)

24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5 (acmicpc.net)

 

24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5

오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시

www.acmicpc.net

문제해설

알고리즘 수행 시간 시리즈 문제들은, 문제에서 제시한 함수의 시간 복잡도를 계산하는 문제들로,

로직을 구현하는게 아닌 문제에서 제시한 함수의 시간 복잡도를 사고하고 입력받은 값 N에 어떻게 비례하는지만 출력해주면 되는 문제이다.

 

이번 문제는 3중 for문이니 n 의 3제곱으로 수행시간이 비례하는 것을 알 수 있다. 시간 복잡도를 계산하는 법은 알고리즘 수행 시간 시리즈 문제들을 전부 푼 뒤, 따로 포스팅해야겠다.

 

전체코드
 
const fs = require("fs");

const input = fs.readFileSync("../input.txt").toString().trim();

var N = BigInt(input);

answer = N*N*N;

answer = answer.toString().replace("n", ""); // BigInt 뒤에 n을 제거해준다.


console.log(answer);
console.log(3);
 

 

이번 문제를 풀면서 얻게된 점

1. Javascript에는 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체 BigInt 가 있다.

2. BigInt에 담긴 수는 출력했을때 뒤에 n이 붙는다. Ex) 1222901239123n

 

나는 javascript가 변수의 자료형을 따로 선언하지 않아서 기본적으로 var 객체로 long 이든 long long 이든 모두 커버 할 수 있다고 생각했다.

그런데 그렇게 풀고 보니 당연히 원하는 결과값이 나오지 않았고 javascript에도 BigInt라는 내장함수가 있다는 점을 배웠다. 또한 BigInt를 사용한 수는 뒤에 n이 붙는다는 사실도 알게 되었다.