-
[문제풀이 후기] 백준 #28352 - 10!문제풀이/Baekjoon 2026. 3. 4. 18:00
https://www.acmicpc.net/problem/28352
기본 상위 코드
import { readFileSync } from "fs"; const input = readFileSync(0).toString().trim();규칙
# 입력값 조건 10 <= N <= 17 # 1 Week (초) 7(일) * 24(시간) * 60(분) * 60(초) # 어떤 N! 이라도 1 ~ 9(= 9!) 는 항상 포함된다. => Week (초) 와 9! 를 약분할 수 있다. - Week : 5 - 9! : 3 # 결론 10 부터 N 까지 곱셈 -> 곱한 값 * 3 / 5첫 번째 시도 (결과 : 성공)
접근 방식
1. 10 ~ N 까지의 배열 생성
2. 초기값을 3으로 설정하고 reduce 진행
3. 결과값 / 5const result = Array.from( { length: Number(input) - 9 }, (_, index) => index + 10, ).reduce((acc, value) => acc * value, 3); console.log(result / 5);
두 번째 시도 (결과 : 성공)
접근 방식
1. BigInt 사용
2. 팩토리얼 계산 후 1 Week (초) 로 나눗셈 진행const week = BigInt(7 * 24 * 60 * 60); let factorial = BigInt(1); for (let i = 2; i <= Number(input); i++) { factorial *= BigInt(i); } console.log((factorial / week).toString());효과
메모리 : 9592 KB -> 9328 KB
후기
아무래도 백준의 채점 환경에서는 단순 for 문을 사용한 것이 배열을 사용하는 것보다 메모리를 더 적게 먹는 구조인 것 같다.
당연히 BigInt 가 메모리를 더 많이 차지할 거라고 생각했는데 여러모로 신기한 결과다.'문제풀이 > Baekjoon' 카테고리의 다른 글
[문제풀이 후기] 백준 #18691 - Pokemon Buddy (0) 2026.04.07 [문제풀이 후기] 백준 #30402 - 감마선을 맞은 컴퓨터 (0) 2026.03.17 [문제풀이 후기] 백준 #11121 - Communication Channels (0) 2026.03.03 [문제풀이 후기] 백준 #32710 - 구구단표 (0) 2026.03.02 [문제풀이 후기] 백준 #29736 - 브실이와 친구가 되고 싶어 (0) 2026.02.27