Where who wants to meet someone

백준 Swift [9506] 약수들의 합 본문

백준 알고리즘 문제 기록/약수, 배수와 소수

백준 Swift [9506] 약수들의 합

Lust3r 2023. 7. 1. 17:13
728x90

난이도

브론즈 I

 

문제

https://www.acmicpc.net/problem/9506

 

9506번: 약수들의 합

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

www.acmicpc.net

 

내 답안

// -1을 EndSign으로 보고 while문 진행
while true {
    let input = Int(readLine()!)!

    // 입력값이 -1이라면 종료
    if input == -1 { break }

    // 1은 모든 수의 약수이기 때문에 sum과 text에 미리 추가
    var sum = 1
    var text = "\(input) = 1"

    // 1을 제외하고 2부터 input보다 작은 수까지 for문 진행
    for i in 2..<input {
        // i가 input의 약수라면 sum에 더해주고, text 뒤편에 추가해준다
        if input % i == 0 {
            sum += i
            text += " + \(i)"
        }
    }

    // sum이 input과 같다면 완전수이기 때문에 text를 출력하고, 아니라면 후자의 문구를 출력한다.
    sum == input ? print(text) : print("\(input) is NOT perfect.")
}