본문 바로가기

두두의 알고리즘/문제

[진법변환] 백준 5692번 '팩토리얼 진법' (Python)

728x90

<문제 링크>

https://www.acmicpc.net/problem/5692

 

5692번: 팩토리얼 진법

상근이는 보통 사람들이 사는 것과는 조금 다른 삶을 사는 사람이다. 상근이는 이런 사람들의 시선이 부담스럽기 때문에, 자신만의 숫자를 개발하기로 했다. 바로 그 이름은 팩토리얼 진법이다.

www.acmicpc.net


<문제 풀이>

  1. 팩토리얼 공식(n! = 1*2*3*...*(n-1)*n)을 알아야 풀 수 있음
  2.  Ex) 719 ==> (7 * 팩토리얼(3)) + (1 * 팩토리얼(2)) + 9 * 팩토리얼(1))
  3. 입력이 몇 줄로 이루어지는지 모르므로 무한루프로 입력을 받고 계산하고 계산이 끝나면 바로 출력한다.
  4. '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)

 

<고쳐야 할 점>

  • 팩토리얼 공식 제대로 이해하고 외우기
  • 문제 제대로 이해하기