CodingTest
프로그래머스 - 합성수 찾기 (JAVA)
쩡선영
2023. 2. 24. 23:30
문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n 이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
<제안사항>
1) 1 <= n <= 100
내가 직접 짠 코드
class Solution {
public int solution(int n) {
int answer = 0, num=1, cnt=0;
for(int i=4; i<=n; i++){ //합성수는 4부터 있음
while (true){
if(i%num==0){
cnt++; //약수 개수 세기
}
num++; // 나눠질 수
//약수의 개수가 3개이거나 나눠지는 수가 i보다 크면 무한루프 탈출
if(cnt==3){
cnt=0; num=1; answer++; //cnt와 num 초기화
break;
}
if(num>i) {
cnt=0; num=1; //cnt와 num 초기화
break;
}
}
}
return answer;
}
}
(설명은 주석 참고)
다른 코드
class Solution {
public int solution(int n) {
int answer = 0;
for(int i=4; i<n+1; i++){
if(i%2==0) {
answer++; // 4이상 짝수는 전부 합성수
continue;
}
else{
for(int k=3; k<i/2; k=k+2){
if(i%k==0){
answer++;
break;
}
}
}
}
return answer;
}
}
한 없이 작아지는... 나의 코드입니다ㅠㅠㅠ