Computer Science/Algorithm
[Baekjoon] Greedy - 2057 팩토리얼 분해
ddu0422
2023. 8. 15. 15:13
문제
2057번: 팩토리얼 분해
음 아닌 정수 N이 주어졌을 때, 이 수를 서로 다른 정수 M(M ≥ 1)개의 팩토리얼의 합으로 나타낼 수 있는지 알아내는 프로그램을 작성하시오. 예를 들어 2=0!+1!로 나타낼 수 있지만, 5는 이와 같은
www.acmicpc.net
풀이
"""
음이 아닌 정수 N (0, 양의 정수)
서로 다른 정수 (M >= 1)개의 팩토리얼 합으로 나타낼 수 있는지 알아보는 프로그램
-> 0! = 1
"""
import itertools
n = int(input())
def solution(n):
factories = [1]
for i in range(1, 21):
factories.append(factories[i - 1] * i)
for i in range(1, len(factories) + 1):
for value in itertools.combinations(factories, i):
if n == sum(value):
return 'YES'
return 'NO'
print(solution(n))
채점 결과
