https://school.programmers.co.kr/learn/courses/30/lessons/120848
어렵게 짰다가 테스트 5번만 계속 실패하길래 초기화 한다음에 천천히 다시 생각해서 문제를 해결했다.
조건식에서 정수 n은 0<n<=3628800이라고 나와있다 또 입출력 예에선 3628800의 결과가 10이라고 나와있다.
즉 결과값은 1~10일 것이고 10!을 확인해보면 3628800 인 것도 알 수 있다.
그렇다면 반복문을 간단하게 만들 수 있다.
1~10까지 반복하며 각 자리 수를 곱해주는 즉 1! ~10!까지 출력하는 반복문을 작성한다.
*여기서 int factorial을 0으로 처음에 선언을 해준다면 값은 0만 출력 될테니 주의하자.
여기서 factorial이 정수 n 보다 작거나 같은 값을 찾아야하기 때문에 factorial <=n라는 조건식을 넣고
해당 조건식에 일치한 i값을 answer에 넣어주고 리턴해주면 된다.
class Solution {
public int solution(int n) {
int answer = 0;
int factorial = 1;
for(int i =1; i<=10; i++){
factorial *=i;
if(factorial <=n){
answer = i;
}
}
return answer;
}
}
'프로그래머스 문제풀어보기' 카테고리의 다른 글
[Lv.0] 분수의 덧셈 (0) | 2023.04.05 |
---|---|
[Lv.0] 옹알이(1) (0) | 2023.04.04 |
[Lv.0] 다음에 올 숫자 (0) | 2023.04.04 |
[Lv.0] 문자열 계산하기 (0) | 2023.04.01 |
[Lv.0] 숨어있는 숫자의 덧셈 (2) (0) | 2023.03.23 |
댓글