[백준] 1564번 팩토리얼5 ★★

거북이·2023년 3월 22일
0

백준[실버2]

목록 보기
55/81
post-thumbnail

💡문제접근

  • 극악의 정답률을 보고 처음엔 경악했다. 입력값의 최대가 1,000,000인 점으로 미루어 보았을 때 일반적인 방식인 factorial을 이용하는 방법은 아닌 것 같았다.
  • 앞에서부터 곱하는 방식을 사용해서 대충 15자리와 같거나 큰 경우가 된다면 슬라이싱을 통해 구간 숫자를 구한다.

💡코드(메모리 : 31256KB, 시간 : 1076ms)

import sys
input = sys.stdin.readline

N = int(input())
result = 1

for i in range(2, N+1):
    result *= i
    if len(str(result)) >= 15:
        result = int(str(result)[-15:])
    while str(result)[-1] == "0":
        result = int(str(result)[:-1])

N = str(result)[-5:]
print(N)

💡소요시간 : 20m

0개의 댓글