https://school.programmers.co.kr/learn/courses/30/lessons/77884
import java.util.ArrayList;
class Solution {
public int solution(int left, int right) {
ArrayList<Integer> argsList = new ArrayList<>();
int answer = 0;
for (int i = left; i <= right; i++) {
argsList.add(i);
}
for (int i: argsList) {
ArrayList<Integer> arrayList = new ArrayList<>();
for (int j = 1; j <= i; j++) {
if (i % j == 0) {
arrayList.add(j);
}
}
if (arrayList.size() % 2 != 0) {
i = i * -1;
}
answer = answer + i;
}
return answer;
}
}
스트림으로 표현
import java.util.stream.IntStream;
class Solution {
public int solution(int left, int right) {
return IntStream.rangeClosed(left, right)
.map(i -> {
// 약수의 개수를 구함
long divisorCount = IntStream.rangeClosed(1, i)
.filter(j -> i % j == 0)
.count();
// 약수의 개수가 홀수면 음수로, 짝수면 그대로
return divisorCount % 2 == 0 ? i : -i;
})
.sum(); // 모두 더한 값을 반환
}
}
'문제 풀이 > 프로그래머스 알고리즘' 카테고리의 다른 글
행렬의 덧셈 // 이중for문, 스트림 (0) | 2024.10.07 |
---|---|
문자열 다루기 기본 // Character.isDigit() (0) | 2024.10.06 |
제일 작은 수 제거하기 // ArrayList.remove() 메서드 + 기본 타입 , 래퍼 클래스 (2) | 2024.10.01 |
핸드폰 번호 가리기 (0) | 2024.09.30 |
나누어 떨어지는 숫자 배열 (1) | 2024.09.28 |