백준 알고리즘 - 팩토리얼 진법(5692)

김찬울·2021년 8월 15일
0
post-thumbnail

  • 출처

일단 문제소개를 하자면 상근이가 독특하다.

숫자를 10진수 그대로 읽지 않고

해당 수가 719가 주어지면 7 * (7의 자릿수의 팩토리얼) 이런식으로 모든 자리에 있는 수에 대하여 더해야지만 10진수로 읽을 수 있다.

코드는 간단하다.

5가지의 팩토리얼 진법이 나오므로 input().split()로 각각에 대한 반복문을 돌린다.

해당 수가 문자열이니까 길이를 구하고 2중 반복문을 만든다.

내부 반복문마지막에서 이전에 구한 len에는 1씩 빼고 그 전에 해당 len의 팩토리얼과 반복문으로 받은 j를 곱해주고 answer에 더한다.

내부 반복문이 끝날 때마다 출력해주면 완벽!

내 코드

import sys
import math

num = input()

for index, i in enumerate(num.split()):
    len_num = len(i)
    answer = 0
    for j in i:
        now = math.factorial(int(len_num))
        answer += now * int(j) 
        len_num -= 1
    if index == 4:
        print(answer, end='')
        break
    print(answer)

하지만 통과를 못했다. split이 속도가 느려서 sys로 readline을 받아와서 strip해야 한단다...
추후 고치겠다.

profile
코린코린이

0개의 댓글