프로그래머스 “약수의 합” 문제 해결과정입니다.
약수의 합
문제설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한사항
n은 0 이상 3000이하인 정수입니다.
입출력 예
| n | result |
|---|---|
12 | 28 |
5 | 6 |
문제 해결과정
프로그래머스 코드
class Solution {
public int solution(int n) {
int answer = 0;
for(int i = 1; i <= n; i++) {
answer += n % i == 0 ? i : 0;
}
return answer;
}
}
n의 약수로 n을 나누었을 때 나머지가 0이라는 성질이 있다. 이를 통해 반복문으로 1부터 n까지의 수 중 나누어 떨어지는 것만을 더한 값을 출력한다.
한 줄 코드
import java.util.stream.IntStream;
class Solution {
public int solution(int n) {
return IntStream.rangeClosed(1, n).filter(i->n % i == 0).sum();
}
}
정리
- 1부터 n까지 반복문
- n과 나누어 떨어지는 반복문 인자를 더한 값을 출력.