728x90
<문제 링크>
https://www.acmicpc.net/problem/5692
<문제 풀이>
- 팩토리얼 공식(n! = 1*2*3*...*(n-1)*n)을 알아야 풀 수 있음
- Ex) 719 ==> (7 * 팩토리얼(3)) + (1 * 팩토리얼(2)) + 9 * 팩토리얼(1))
- 입력이 몇 줄로 이루어지는지 모르므로 무한루프로 입력을 받고 계산하고 계산이 끝나면 바로 출력한다.
- '0'을 받으면 루프를 종료한다.
<코드>
'''입력 예제
719
1
15
110
102
0
'''
import sys
def fac(n):
if n<=1:
return 1
return n * fac(n-1)
while True:
result = 0
n = sys.stdin.readline().rstrip()
if n=='0':
break
for kdx, k in enumerate(n[::-1]):
result += fac(kdx+1) * int(k)
print(result)
<고쳐야 할 점>
- 팩토리얼 공식 제대로 이해하고 외우기
- 문제 제대로 이해하기
'두두의 알고리즘 > 문제' 카테고리의 다른 글
[진법변환] 프로그래머스 L1 '비밀지도' (Python) (0) | 2021.11.23 |
---|---|
[진법변환] 백준 2745번 '진법 변환' (Python) (0) | 2021.11.23 |
[탐욕법] 난이도1, 2019 국가 교육기관 코딩 테스트 '숫자 카드 게임' (Python) (0) | 2021.11.23 |
[탐욕법] 난이도1, 2018 E 기업 알고리즘 대회 '1이 될 때까지' (Python) (0) | 2021.11.23 |
[탐욕법] 백준 10162번 '전자레인지' (Python) (0) | 2021.11.23 |