코딩 공부/프로그래머스 코딩테스트

[프로그래머스] 팩토리얼 | C#

maintain_H 2024. 4. 16. 19:04
반응형

[ 팩토리얼 ] 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

문제 설명

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

  • i! ≤ n

 

제한사항

  • 0 < n ≤ 3,628,800

 

입출력 예

n return
3628800 10
7 3

 

입출력 예 설명

입출력 예 #1 

  • 피보나치수는 0번째부터 0, 1, 1, 2, 3, 5, ... 와 같이 이어집니다.

입출력 예 #2

  • 3! = 6, 4! = 24입니다. n이 7이므로, 7 이하의 최대 팩토리얼인 3을 return 합니다.

 

[ 풀이 ]

 

using System;

public class Solution {
    int answer;
    int mul = 1;
    
    public int solution(int n){
        for(int i = 1; i <= 10; i++){
            mul *= i;
            
            if(mul >= n){
            answer = mul > n ? i - 1 : i;
            break;
            }
        }
        return answer;
    }
}

 

 n이 3,628,800까지인데, 10!이 3,628,800이니까 최대 10번 반복하면 답을 구할 수 있다.

mul에 i를 곱했을 때 값이 n보다 크면 최대 팩토리얼은 n -1이고, n과 같다면 i!이다.

이걸 if문으로 쓸 때보다 삼항연산자로 구현하는 게 코드가 더 짧고 간결하니까 answer의 답을 삼항연산자를 통해 구해주었다.

 

반응형