[Algorithm] 약수의 합

2024. 12. 9. 14:32·Algorithm/Practice

문제 설명

정수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수, solution을 완성해주세요.

 

문제 유형

  • 약수 구하기

 

의사코드

  1. 총합을 저장할 변수(sum)를 선언한다.
  2. [반복문] 2부터 √N까지 반복한다.
    1. 만약 N을 나누었을 때 나머지가 0이라면
      1. 나눈 수와 몫을 sum에 더한다.
      2. 나눈 수와 몫이 동일한 값이라면 한 번만 더한다.
  3. 총합(sum)을 반환한다.

 

코드 작성

int solution(int num) {
    int sum = 0;
    int rootNum = sqrt(num);
    
    for (int div = 1; div <= rootNum; div++)
    {
        if (num % div == 0)
        {
            sum += div;
            
            int quotient = num / div;
            if (quotient != div)
            {
                sum += quotient;
            }
        }
    }
    return sum;
}

 

 

배운 점
  • N의 약수를 구하려면 1부터 N의 제곱근까지만 반복하면 된다.
    • 이유는 약수의 최대 값은 N이다. (1 x N)
    • 약수 a가 √N보다 크면, 그에 대응하는 약수 b는 √N보다 작아진다.
    • 그러나 √N보다 작은 수는 a를 탐색하면서 이미 확인된 약수이다.
    • 따라서 a <= √N까지 탐색하면 모든 약수를 구할 수 있다.
  • 시간 복잡도는 O(√N)가 된다.

'Algorithm > Practice' 카테고리의 다른 글

[Algorithm] x만큼 간격이 있는 n개의 숫자  (1) 2024.12.09
[Algorithm] 나머지가 1이 되는 수 찾기  (0) 2024.12.09
[Algorithm] 자릿수 더하기  (0) 2024.12.08
[Algorithm] 평균 구하기  (0) 2024.12.08
[Algorithm] 짝수와 홀수  (0) 2024.12.06
'Algorithm/Practice' 카테고리의 다른 글
  • [Algorithm] x만큼 간격이 있는 n개의 숫자
  • [Algorithm] 나머지가 1이 되는 수 찾기
  • [Algorithm] 자릿수 더하기
  • [Algorithm] 평균 구하기
DevColIn
DevColIn
복잡함을 단순하게
  • DevColIn
    심플한 코딩생활
    복잡함을 단순하게
  • 전체
    오늘
    어제
    • 전체보기 (223)
      • Unreal 부트캠프 (49)
        • TIL (34)
        • 사전캠프 (7)
        • 본캠프 (8)
      • Unrael (10)
        • 환경설정 (0)
        • Basic (19)
        • Component (5)
        • GAS (GameplayAbilitySystem) (3)
        • AI (2)
        • Implement (10)
        • UI (1)
        • Error (1)
        • Network (2)
        • Tip (1)
      • Level Design (5)
      • Math (1)
      • Design Pattern (16)
      • Computer Science (2)
        • Network (1)
        • Database (1)
      • Algorithm (79)
        • Basic (4)
        • Practice (74)
      • C++ (4)
        • Basic (4)
      • Tool (0)
      • Game (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 미디어로그
    • 위치로그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    알고리즘
    basic
    디자인패턴
    디자인 패턴
    actor
    Til
    component
    GameplayEffect
    DesignPattern
    unreal
    unrealengine
    액터
    gas
    본캠프
    사전캠프
    하드 레퍼런싱
    레벨디자인
    Implement
    소프트 레퍼런신
    KPT회고
    Design Pattern
    내일배움캠프
    Animation
    AI
    퀘스트
    Algorithm
    게임동기화
    tsoftobjectptr
    c++
    assetmanager
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.2
DevColIn
[Algorithm] 약수의 합
상단으로

티스토리툴바