요구능력 : 약수에 대해 이해하고 있느냐
코드설명 :
정말 신박하다.
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)")
}
'Algorithm > 문제풀이_백준' 카테고리의 다른 글
Swift) 백준 2609번 (최대공약수와 최소공배수) (0) | 2021.08.25 |
---|---|
Swift) 백준 17425번 (약수의 합) (0) | 2021.08.25 |
Swift) 백준 1037번 (약수) (0) | 2021.08.25 |
Swift) 백준 4375번 (1)(종료조건 EOF) (0) | 2021.08.24 |
Swift) 백준 18870번 (좌표압축) (0) | 2021.08.24 |
댓글