프로그래머스 코딩테스트 연습 입문단계 '합성수 찾기' 문제입니다.
https://school.programmers.co.kr/learn/courses/30/lessons/120846
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
❓ 문제 설명
약수의 개수가 세 개 이상인 수를 합성수라고 합니다. 자연수 n이 매개변수로 주어질 때 n이하의 합성수의 개수를 return하도록 solution 함수를 완성해주세요.
※ 아래 입출력 예시를 참고하세요!
⚠️ 제한사항 및 입출력 예시
- 1 <= n <= 100
입출력 예시 ▼
입력 (n)
10
출력 (return 값)
5
//10 이하 합성수는 4, 6, 8, 9, 10 로 5개입니다. 따라서 5를 return합니다.
🔍 알고리즘 구상
합성수는 소수와 달리 약수를 3개 이상 가지고 있다.
- 이중 for문으로 배열의 모든 값을 비교한다.
- 배열의 값의 약수의 개수를 알아낸 뒤 그 약수가 3개 이상이면 합성수로 판단한다.
✏️ 직접 작성한 코드
class Solution {
public int solution(int n) {
int count = 0;
int res_count = 0;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= i; j++) {
if(i%j==0)
count++;
}
if(count >= 3)
res_count++;
count = 0;
}
return res_count;
}
}
🗣️ 코드 설명
- 먼저 배열 값의 약수의 개수를 저장할 count와 return해야하는 합성수의 개수를 저장할 res_count를 생성합니다.
- n 이하의 값을 나타낼 i가 1부터 n까지 증가하며 반복하는 for문과 그 for문 안에서, i가 약수 몇 개를 가지고 있는지 알아낼 for문을 하나 더 만듭니다.
- 안에 있는 for문에서 i % j를 해 0으로 나누어 떨어지면 j는 i의 약수이므로 count의 값을 1 더합니다.
- 그렇게 안에 있는 for문에서 i의 약수 개수를 저장한 count의 값이 3개 이상이라면, 합성수이므로 res_count의 값을 1 더합니다. count의 값은 다시 0으로 치환합니다.
'코딩테스트 회고록 > 코테_Java' 카테고리의 다른 글
[JAVA] 프로그래머스 - 중복된 문자 제거 (0) | 2023.03.23 |
---|---|
[JAVA] 프로그래머스 - 7의 개수 (0) | 2023.03.20 |
[JAVA] 프로그래머스 - 가까운 수 (0) | 2023.03.11 |
[JAVA] 프로그래머스 - 배열 회전시키기 (0) | 2023.03.07 |
[JAVA] 학교 수행평가 코딩테스트 - 문자열을 입력 받아 거꾸로 출력하기 (0) | 2023.03.06 |