728x90
KDT 실무형 스프링 백엔드 엔지니어 양성과정 6기 | Algorithm CODEKATA
➕ 약수의 합
🏷 관련 주제 : 반복문 조건문 나머지 연산자 덧셈 연산자
문제 설명
정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.
제한 사항
n은 0 이상 3000이하인 정수입니다.
입출력 예
| n | return |
|---|---|
| 12 | 28 |
| 5 | 6 |
입출력 예 설명
입출력 예 #1
12의 약수는 1, 2, 3, 4, 6, 12입니다. 이를 모두 더하면 28입니다.
입출력 예 #2
5의 약수는 1, 5입니다. 이를 모두 더하면 6입니다.
✔ Solution with Loop & Arithmetic Operator
class Solution {
public int solution(int n) {
int answer = 0;
for (int i = 1 ; i <= n; i++) {
if (n % i == 0) {
answer += i;
}
}
return answer;
}
}
채점 결과

💥 오늘 만난 문제 & 나의 시도 💦 & 해결 방법 👍
📌 오늘 만난 문제 : 매개변수로 받은 정수 n의 약수 모두 더한 값을 반환하라.
1. n의 약수의 합을 담을 정수형 변수 answer 초기화
int answer = 0;
2. 반복문으로 1부터 n까지 돌며 각 값이 n을 나누는지 확인하기
만약, 그 값이
n을 나누면 나머지는0
for (int i = 1 ; i <= n; i++) {
...
}
- 만약 그 값이
n을 나누면answer에 그 값을 더해주자.if (n % i == 0) { answer += i; }
3. 반복문이 끝나면 n의 모든 약수들을 answer에 더해주었으므로 answer을 반환하자.
return answer;
💬 무엇을 새롭게 알았는지
1부터n까지의 자연수 중에서n의 약수를 찾기 위해 반복문을 평소 사용하던 초기값인0이 아닌1부터 사용해 보았다.for (int i = 1; i <= n; i++) { ... }
n의 약수를k는n을 나누는 수 이므로n을k로 나누었을 때, 나머지가0이다.n % k == 0
📚 References(참고 자료)
728x90