본문 바로가기
Algorithm/문제풀이_백준

Swift) 백준 17427번 (약수의 합 2)

by Joahnee 2021. 8. 25.

요구능력 : 약수에 대해 이해하고 있느냐

 

코드설명 : 

 

정말 신박하다.

 

4를 생각해보자.

[1], [1, 2], [1, 3], [1, 2, 4]

이렇게 1이 4번, 2가 2번, 3이 1번, 4가 1번나온다.

 

다른 수도 마찬가지로 이와 같은 규칙을 갖고있다.

이 규칙을 식으로 나타내보면 n / i * i가 되는것이다.

 

4/ 1 = 4 ; 4 * 1 = 4

4/ 2 = 2 ; 2 * 2= 4

4/ 3 = 1 ; 1 * 3 = 3

4/ 4 = 1 ; 1 * 4 = 4

4 + 4 + 3 + 4 = 15가 된다.

n/i * i를 한것이다.

 

다른 블로그들에는 10이 많이 적혀있어서 나는 4를 예시로 들어봤다.

 

후기 : 시간초를 보고 혹시 이게안될까 싶었는데.. 역시나 안됐다.. 처음시도한 코드는 시간초과...

역시나 알수없어서 구글링 해봤는데 참.. 신박한 풀이법인것같다. 알고리즘의 세계란.. 수학이 약점...

 

let n = Int(readLine()!)!
var sum = 0
for i in 1...n {
    sum += (n / i) * i
}
print("\(sum)")

 


처음시도한 코드

let n = Int(readLine()!)!
g(n)

func g(_ n:Int) {
    var sum = 0
    for i in 1...n {
        for j in 1...i {
            if i % j == 0 {
                sum += j
            }
        }
    }
    print("\(sum)")
}

 

댓글