본문 바로가기

Programmers/Go

[Programmers/Go] 약수의 합

1. 문제

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

제한 사항

  • n은 0 이상 3000이하인 정수입니다.

2. 풀이

// 약수의 합
package sumcd

func Solution(n int) int {
	sum := 0

	for i := 1; i*i <= n; i++ {
		if n%i == 0 {
			cd := n / i
			sum += cd
			if cd != n/cd {
				sum += n / cd
			}
		}
	}

	return sum
}

3. 테스트

package sumcd

import "testing"

func TestSumcd(t *testing.T) {
	input := []int{12, 5}
	expect := []int{28, 6}

	for i := range input {
		result := Solution(input[i])
		if result != expect[i] {
			t.Errorf("Test%d: Wrong result", i+1)
			t.Error("expect:", expect[i])
			t.Error("result:", result)
		}
	}
}