사이트 이름 - 문제 20번
n! 이라는 표기법은 n × (n − 1) × ... × 3 × 2 × 1을 뜻합니다.
예를 들자면 10! = 10 × 9 × ... × 3 × 2 × 1 = 3,628,800 이 되는데, 여기서 10!의 각 자릿수를 더해 보면 3 + 6 + 2 + 8 + 8 + 0 + 0 = 27 입니다.
100! 의 자릿수를 모두 더하면 얼마입니까?
해결 방법
fact = 1
for i in range(1, 101):
fact *= i
s = 0
for i in str(fact):
s += int(i)
print(s) # 648
1부터 100까지 모두 곱한 결괏값을 문자형으로 변경한다. 문자형으로 변경하면 리스트로 처리할 수 있어서 각 자리를 숫자형식으로 다시 바꾸면 더할 수 있다.
처음에는 팩토리얼 재귀함수를 만들어 풀었는데 그냥 루프문으로 돌렸다.
팩토리얼로 풀면 메모리를 많이 먹는다는 이야기를 들어서...
팩토리얼로 푼 코드
def factorial(x):
if x < 2:
return 1
return x * factorial(x - 1)
result = str(factorial(100))
s = 0
for i in str(result):
s += int(i)
print(s) # 648
'프로그래밍 > 알고리즘' 카테고리의 다른 글
1부터 1000까지 영어로 썼을 때 사용된 글자의 개수는? (0) | 2021.02.07 |
---|---|
2의 1000제곱의 각 자릿수를 모두 더하면? (0) | 2021.02.06 |
백만 이하로 시작하는 우박수 중 가장 긴 과정을 거치는 것은? (0) | 2021.02.05 |
50자리 수 100개를 더한 값의 첫 10자리 구하기 (0) | 2021.02.04 |
500개 이상의 약수를 갖는 가장 작은 삼각수는? (0) | 2021.02.03 |