문제
N!의 0이 아닌 마지막 자릿수를 구하라.
입력
정수 N이 주어진다 (N은 20,000 이하).
출력
N!의 0이 아닌 마지막 자릿수를 출력한다.
예제
| 입력 | 출력 |
|---|---|
5 | 2 |
풀이
N!을 직접 계산한 뒤 끝에서부터 0이 아닌 자릿수를 찾는다.
- 1부터 N까지 곱하여 N!을 계산한다
- 결과를 문자열로 변환하여 끝에서부터 탐색한다
- 처음 만나는 0이 아닌 자릿수를 출력한다
핵심 아이디어: Python의 큰 수 연산으로 N!을 직접 계산할 수 있고, 문자열 역순 탐색으로 답을 찾는다.
코드
n = int(input())
ans = 1
for i in range(1,n+1):
ans *= i
ans = str(ans)
for i in range(len(ans)-1,-1,-1):
if int(ans[i]) != 0:
print(ans[i])
break복잡도
- 시간: O(N)
- 공간: O(N)