-
[프로그래머스] 약수의 개수와 덧셈 제곱근방식코딩테스트 2025. 4. 4. 15:41반응형
문제
주어진 정수 left ~ right까지의 모든 수들의 약수의 갯수를 구하고, 약수의 갯수가 짝수면 answer 에 더하고 홀수면 answer에서 뺀 최종 결과값을 구하시오.
접근
제곱근 방식을 사용해 반복 횟수를 최소화하여 작업하도록 작성함.
우선 각 숫자별 약수의 갯수를 구한 후, 갯수에 따라 answer에서 증감시킨다.
public static int solution(int left, int right) { List<Integer> factors = new ArrayList<>(); List<Integer> numbers = new ArrayList<>(); int answer = 0; //각 숫자별 약수의 갯수 구하기 제곱근 방식 for(int i = left; i <= right; i ++){ int cnt = 0; for(int j = 1; j <= Math.sqrt(i); j ++){ if (i % j == 0) { cnt ++; if( j != i / j) { cnt ++; } } } factors.add(cnt); numbers.add(i); } for(int i = 0 ; i < factors.size(); i++){ if( factors.get(i) % 2 == 0) { answer += numbers.get(i); } else { answer -= numbers.get(i); } } return answer; }
반응형'코딩테스트' 카테고리의 다른 글
[프로그래머스] 음양 더하기 자바 (0) 2025.04.04 [프로그래머스] 로또의 최고 순위와 최저 순위 자바 Map과 Math.max (0) 2025.04.04 [프로그래머스] 숫자 문자열과 영단어 자바 문자비교 (0) 2025.04.04 [프로그래머스] 부족한 금액 계산하기 자바 등차수열의 합 (0) 2025.04.04 [프로그래머스] 없는 숫자 더하기 자바 sort (0) 2025.04.04