• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#12928 문제이름

image

문제 정리

n의 약수를 모두 더한 값을 리턴

생각해보기

약수라는 것은.. 만약에 수가 12면
(1, 12) (2, 6) (3, 4) (4, 3).. 이렇게 가다가 (x, y)에서 x가 y보다 커지면 멈추면 된다.

코드 쓰기

내 풀이

#include <string>
#include <vector>

using namespace std;

int solution(int n) {
    int answer = 0;
    
    if(n <= 1){
        return n;
    }
    
    for(int i=1; i<=n/2; i++){
        if(n % i == 0){
            if( n / i < i){
                break;
            }else if(n / i == i){
                answer += i;
            }else {
                answer += i;
                answer += n / i;
            }
        }
    }
    
    return answer;
}

풀고 나서 알게된 것

n이 1일때랑, 25처럼 (5, 5)가 나올때를 고려해줘야 함!