[프로그래머스] LV.0 팩토리얼

seho·2023년 2월 14일
0

codetest

목록 보기
4/17
post-thumbnail

문제

i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.

- i! ≤ n

제한사항

- 0 < n ≤ 3,628,800

입출력 예시

n    result
3628800    10
7    3

풀이

풀이

def solution(n):
    for i in range(1,12):
        num = 1
        for j in range(1,i+1):
            num*=j
        if num > n:
            return i-1  
            break
  • 먼저 n 범위 내에서 정수 i 를 증가시켜가며 i! 값을 구해주기 위해 for 문을 2번 사용한다.
  • i! 값을 구할 때 변수를 초기화 하여 곱해주기 위해 num=1로 2번 째 for문이 실행 될 때 초기화 시켜준다.
  • i!값인 num 이 n을 초과할 때 i의 값을 return 해 주는데 이 때는 팩토리얼 값이 n보다 크므로 그 전 정수인 i-1 값을 리턴해준다.

오답노트

def solution(n):
    for i in range(1,n):
        num = 1
        for j in range(1,i+1):
            num*=j
        if num > n:
            return i-1  
            break
  • 첫 번째 i의 범위에서 range(1,n)으로 주어진 정수 전체의 범위를 주었더니 오답이 나온다.
  • 이유는 잘 모르겠는데 알면 댓글좀 부탁드립니다 ... 프로그래머스에서 문의해두었습니다!
profile
develop my'self and sw

0개의 댓글