체리의 하루
Published 2023. 3. 27. 13:12
[Go] BOJ / 9506번 / 약수들의 합 BOJ/Go

💻 문제

 

9506번: 약수들의 합

어떤 숫자 n이 자신을 제외한 모든 약수들의 합과 같으면, 그 수를 완전수라고 한다. 예를 들어 6은 6 = 1 + 2 + 3 으로 완전수이다. n이 완전수인지 아닌지 판단해주는 프로그램을 작성하라.

www.acmicpc.net

 

📜 풀이

package main

import (
	"bufio"
	"fmt"
	"os"
)

func main() {
	var n, sum int

	r := bufio.NewReader(os.Stdin)
	w := bufio.NewWriter(os.Stdout)

	defer w.Flush()

	for {
		fmt.Fscanln(r, &n)
		var factor []int

		sum = 0

		if n == -1 {
			break
		} else {
			for i := 1; i < n; i++ {   //자신을 제외한 약수의 합
				if n%i == 0 {
					sum += i
					factor = append(factor, i)
				}
			}
			if n == sum {
				fmt.Fprintf(w, "%d = ", n)
				for j := range factor {
					if j == len(factor)-1 {
						fmt.Fprintf(w, "%d\n", factor[j])
					} else {
						fmt.Fprintf(w, "%d + ", factor[j])
					}
				}
			} else {
				fmt.Fprintf(w, "%d is NOT perfect.\n", n)
			}
		}
	}
}

 

✍ 설명

  • slice = append(slice, 값) : 슬라이스 마지막 부분에 추가됨
  • slice = append(값, slice) : 슬라이스 앞 부분에 추가됨
728x90

'BOJ > Go' 카테고리의 다른 글

[Go] BOJ / 11653번 / 소인수분해  (0) 2023.03.27
[Go] BOJ / 2581번 / 소수  (0) 2023.03.27
[Go] BOJ / 1978번 / 소수 찾기  (0) 2023.03.27
[Go] BOJ / 2501번 / 약수 구하기  (0) 2023.03.27
[Go] BOJ / 5086번 / 배수와 약수  (0) 2023.03.27