썬키의 개발노트
[JAVA-120846] 합성수 찾기 본문
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
링크를 클릭하면 해당 문제로 이동합니다.
1. 접근하기
나는 for문을 3개 사용해서 매개변수로 주어진 n 이하의 수들의 약수를 구한다음 약수의 갯수가 3개 이상이면
answer의 값이 증가하도록 코드를 짰다.
TO-DO |
1) n 이하의 수들의 약수를 구하기 위해 int 타입 변수 num의 값을 1로 초기화하고 약수 구하는 과정이 끝나면 num을 증가 시킨다. |
2) 약수를 구한 다음에는 약수들을 list에 넣는다. 이 때, 약수의 갯수가 3개 이상이면 answer의 값을 증가 시킨다. |
2. 풀이
import java.util.ArrayList;
import java.util.List;
class Solution {
public int solution(int n) {
int answer = 0;
int num = 1;
for(int i = 0; i < n; i++) {
List<Integer> list = new ArrayList<>();
for(int j = 1; j <= num; j++) {
for(int k = 1; k <= num; k++) {
if(j*k == num) {
list.add(j);
if(!(list.contains(j))) {
list.add(k);
}
}
}
}
if(list.size() > 2) {
answer++;
}
num++;
}
return answer;
}
}
3. 결과
4. 리뷰
사실 난 수포자라 이런 수학적 사고를 0.1%라도 필요로 하는 문제를 만날 때마다 머리가 아프다ㅎ...
문제를 풀고 나서 다른 사람들의 풀이를 보니까 4 이상의 짝수들은 모두 합성수라고 한다.
그렇다면 굳이 1 ~ 3 까지의 약수들은 구할 필요가 없었다.
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[JAVA-120896] 한 번만 등장한 문자 (0) | 2023.01.19 |
---|---|
[JAVA-120890] 가까운 수 (0) | 2023.01.19 |
[JAVA-120815] 피자 나눠 먹기(2) (0) | 2023.01.18 |
[JAVA-120844] 배열 회전시키기 (0) | 2023.01.18 |
[JAVA-120893] 대문자와 소문자 (0) | 2023.01.17 |