프로그래머스_Lv0_팩토리얼 _파이썬

Today Jeeho Learned·2022년 12월 15일
0

알고리즘

목록 보기
29/38
post-thumbnail

문제 출처

https://school.programmers.co.kr/learn/courses/30/lessons/120848

내 답안

def fact(z):
    answer = 1
    for i in range(1, z+1):
        answer *= i
    return answer


def solution(n):
    answer = []
    for i in range(1, 11):
        if fact(i) <= n:
            answer.append(i)
    return max(answer)

    

풀이 정리

  • 팩토리얼을 보고서 파이썬자체에서 제공한다는 것을 잊고, 새롭게 함수를 만들어서 제공했다.
  • 조건을보니 최대값이 10! 값임을 알고서 이에 맞게 작성해야겠다고 생각했다.
  • 그래서 1부터 10까지 증가하는 i!를 구하고서 주어진 n보다 작을경우 i값을 새로운 배열에 넣어주었다.
  • 그리고 i값들중에서 max값을 구해서 돌려주었다.

다른풀이

from math import factorial

def solution(n):
    k = 10
    while n < factorial(k):
        k -= 1
    return k

import math

def solution(n):
    answer = 0
    for i in range(1, 12):
        if n < math.factorial(i):
            return i - 1
    return answer

다른 사람들의 풀이를 보고서 파이썬 자체에서 팩토리얼을 제공해준다는 사실을 깨달았다.
1번째 풀이는 10!에서 하나씩 줄여가면서 n값보다 작을 경우에 k값을 리턴해주는 담백한 소스였고, 2번째 풀이도 하나씩 값을 줄여준다는 것에서 동일했다. 나는 거기까지는 생각을 못했고, 값들을 모아 최대값을 돌려주면되겠다고 생각했는데 메모리적인 측면에서 따로 배열을 만들필요없이 간소화해보는 것도 고려해야겠다.

profile
기록해야 (살아)남는다 !

0개의 댓글