프로그래머스 코딩테스트 연습 '팩토리얼' 문제입니다.
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓문제 설명
i팩토리얼 (i!)은 1부터 i까지 정수의 곱을 의미합니다. 예를들어 5! = 5 * 4 * 3 * 2 * 1 = 120 입니다. 정수 n이 주어질 때 다음 조건을 만족하는 가장 큰 정수 i를 return 하도록 solution 함수를 완성해주세요.
⚠️ 제한사항
- 0 < n ≤ 3,628,800
✏️ 직접 구현한 코드
class Solution {
public int solution(int n) {
int i = 1, pdt=1; //product
for(;;) {
pdt *= i;
if(pdt*(i+1) > n) break;
i++;
}
return i;
}
}
🗣️ 코드 설명
- for문를 무한루프로 만들고, 그 for문에서 pdt와 i가 계속 곱해지도록 했다.
- 또한 for문은 pdt와 i보다 1큰 값이 곱해진 값이 n보다 크다면 break한다.
🔥다른 사람의 코드
class Solution {
public int solution(int n) {
int fac = 1;
int i = 0;
while(true){
if(fac <= n){
fac *= i + 1;
i++;
}else break;
}
return i-1;
}
}
내 코드에서 if문은 pdt*(i+1) > n이면 나오도록 했지만, 이 사람의 코드에서는 return 에서 그냥 1을 빼버렸다.
또 나는 while문을 잘 안써서 다음부터는 while문도 좀 써봐야겠다고 느꼈다.
'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글
[JAVA] 프로그래머스 - 문자열 뒤집기 (0) | 2023.01.31 |
---|---|
[JAVA] 프로그래머스 - 나이 출력 (0) | 2023.01.31 |
[JAVA] 프로그래머스 - A로 B 만들기 (0) | 2023.01.26 |
[JAVA] 프로그래머스 - 제곱수 판별하기 (0) | 2023.01.13 |
[JAVA] 프로그래머스 - 잘라서 배열로 저장하기 (0) | 2023.01.10 |