반응형
문제 큰 팩토리얼
구름LEVEL
구름LEVEL 문제를 풀이하고 부족한 부분을 보완하며 실력을 키워보세요. 구름LEVEL은 코딩테스트에서 가장 높은 비중을 차지하는 알고리즘 문제를 제작하고 풀이할 수 있는 온라인 저지 서비스입
level.goorm.io
진짜 짜증 나는 문제였습니다.
솔루션
1. for 문
// Run by Node.js
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
for await (const line of rl) {
let result = BigInt(1)
for(let i = line; i >= 1; i--){
result *= BigInt(i);
}
result = result % BigInt(1000000007)
console.log(result.toString())
rl.close();
}
process.exit();
})();
2. 재귀 함수
// Run by Node.js
const readline = require('readline');
(async () => {
let rl = readline.createInterface({ input: process.stdin });
function factorial(num){
if(num > 1){
return BigInt(num) * BigInt(factorial(num - 1))
}
return 1
}
for await (const line of rl) {
let result = factorial(line)
result = result % BigInt(1000000007)
console.log(result.toString())
rl.close();
}
process.exit();
})();
배운 점
BigInt는 Number 원시 값이 안정적으로 나타낼 수 있는 최대치인 2^53 - 1보다 큰 정수를 표현할 수 있는 내장 객체입니다.
BigInt는 정수 리터럴의 뒤에 n을 붙이거나(10n) 함수 BigInt()를 호출해 생성할 수 있습니다.
자바스크립트가 표현할 수 있는 최댓값
JavaScript의 Number 타입은 64비트 부동소수점 형식을 사용하며, 53비트가 유효한 정수 표현 범위입니다. 따라서 2^53 - 1은 JavaScript에서 정확하게 표현할 수 있는 가장 큰 정수값입니다.
2의 53 제곱을 10진수로 읽으면 "9,007,199,254,740,992"입니다.
읽으면 "구십조칠천백구십구억이천오백사십칠만사천구백구십일"입니다.
p.s 90조 보다 큰 값을 다룰 수도 있겠..ㅈ?
p.s1 요즘 메모리 값도 싼데 그냥 좀 늘리면 안 될까..
반응형
'개발관련 > 매일 코딩 테스트 챌린지' 카테고리의 다른 글
자바스크립트 코딩테스트 구름 거스름돈 (0) | 2023.07.06 |
---|---|
자바스크립트 코딩 테스트 구름 문제 연속 점수 문제 (0) | 2023.07.06 |
프로그래머스 무인도 버티기 자바스크립트 (0) | 2023.04.15 |
[코딩테스트 준비]자바스크립트 그리드 알고리즘 코딜리티 연습 javascript algorithm codility greedy (1) | 2023.04.13 |
[프로그래머스] 제일 작은 수 제거하기 (JavaScript) (0) | 2020.10.02 |