[프로그래머스][파이썬] 팩토리얼 - 수학 (Level 0)

뻥튀기아이스크림·2025년 3월 17일
post-thumbnail

◽ 문제 출처

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

◽ 문제

◽ 입력 & 출력

◽ 내 풀이

import math

def solution(n):
    answer = 0
    
    i = 0
    while math.factorial(i) <= n:
        i += 1

    return i - 1
  • 역시 step 이 아닌 어떤 조건으로 반복할 때는 while 문이 좋아보였다.
  • math.factorial() 함수를 사용해서 값을 검사하고 n 보다 작다면 값을 늘려가며 비교했다.
  • 주의해야할 점은 반복문 빠져나오기 전에 i += 1 이 한 번 더 실행되니 반환값을 신경써야한다.

◽ 다른 사람 풀이

def solution(n):
    base = 1
    m = 1
    while base <= n:
        m += 1
        base *= m
        
    return m - 1
  • 팩토리얼 내장 함수를 변수에 *= 연산자로 대신한 풀이이다.

◽ 더 나아가기

  • 이론적인 시간복잡도는 O(n) 으로 동일하지만, 내장 함수가 내부적으로 최적화가 더 되어있다고 하니 import 를 금지하지 않는 한 굳이 *= 연산자로 구하지 않아도 될 것 같다.



피드백은 언제나 환영입니다 :)

profile
성장하고 싶은 개발자

0개의 댓글