728x90
문제 24266번
https://www.acmicpc.net/problem/24266
24266번: 알고리즘 수업 - 알고리즘의 수행 시간 5
오늘도 서준이는 알고리즘의 수행시간 수업 조교를 하고 있다. 아빠가 수업한 내용을 학생들이 잘 이해했는지 문제를 통해서 확인해보자. 입력의 크기 n이 주어지면 MenOfPassion 알고리즘 수행 시
www.acmicpc.net
이번에는 MenOfPassion 알고리즘에 for문이 3개이다. 각 범위는 1에서부터 n까지이다.
그러므로 수행 횟수는 n*n*n 즉, n**3이고, for문이 3개이므로 최고차항의 차수는 3이다.
...
라고 했는데
음... 아무리봐도 맞는데?? 하는 생각에 다른 분의 풀이를 찾아보니
JavaScript로 표현할 수 있는 Number의 범위가 -2^53+1에서 2^53-1(9,007,199,254,740,991)까지인데 문제 입력의 최대 범위는 이를 초과하는 값을 가지게 된다고 한다. 따라서 Number 대신 그 범위를 넘는 숫자를 사용할 수 있게 해주는 BigInt를 사용해야 한다. 여기서 BigInt를 그냥 사용할 경우 뒤에 n이 붙어서 나오기 때문에 이를 문자열로 다시 변경해줘야 숫자값을 출력할 수 있다고 한다.
[출처] https://minjo0n.tistory.com/12
코드를 수정해보면
const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim();
let n = BigInt(input);
console.log(`${n*n*n}`)
console.log(3)
다른 분은 후에 n이 붙으면 replace()를 통해 제거해주신 분도 있어서 그 풀이처럼 풀어도 봤다.
const readFileSyncAdress = process.platform === 'linux' ? '/dev/stdin':'./input.txt'
const input = require("fs").readFileSync(readFileSyncAdress).toString().trim();
let N = BigInt(input);
let n = N*N*N;
n = n.toString().replace('n',''); //n을 제거
console.log(n)
console.log(3)
[참고] https://dnd0707.tistory.com/14
728x90
'백준 > JavaScript' 카테고리의 다른 글
[JS] 백준 2798번 - 블랙잭 (1) | 2024.03.17 |
---|---|
[JS] 백준 24267번 - 알고리즘의 수행 시간 6 (2) | 2024.03.15 |
[JS] 백준 24265번 - 알고리즘의 수행 시간 4 (0) | 2024.03.13 |
[JS] 백준 - 알고리즘 수행 시간 3 (0) | 2024.03.12 |
[JS] 백준 24263번 - 알고리즘의 수행 시간 2 (4) | 2024.03.12 |