본문 바로가기
Language/Java

[Programmers | Java | 연습 문제 풀이] 약수의 합 - Solution with Loop & Arithmetic Operator

by ㅇ달빛천사ㅇ 2024. 6. 9.
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의 약수를 kn을 나누는 수 이므로 nk로 나누었을 때, 나머지가 0이다.
    n % k == 0


📚 References(참고 자료)

728x90


Top