-
Notifications
You must be signed in to change notification settings - Fork 0
Closed
Description
💬 문제
[코딩테스트 연습 - 기사단원의 무기](https://school.programmers.co.kr/learn/courses/30/lessons/136798)
💬 Idea
- 약수를 구할 때 계속 시간초과 오류가 났다.
- 그래서 제곱근만큼 잘라서 수를 비교해주었다 !
- 약수를 판별할 때 해당 수가 곱해져서 원 수가 된다면 → ex) 2*2=4
- 약수가 2개가 아니라 자기 자신 하나이므로 1을 더해주고
- 그렇지 않으면 2를 더해준다. 반만 잘라서 비교하는 것이기 때문!
- 약수를 판별할 때 해당 수가 곱해져서 원 수가 된다면 → ex) 2*2=4
💬 풀이
import Foundation
func solution(_ number:Int, _ limit:Int, _ power:Int) -> Int {
var divideNumbers: [Int] = []
for i in 1...number {
var divideNumber = 0
for j in 1...Int(sqrt(Double(i))) {
if i % j == 0 {
if j * j == i {
divideNumber += 1
} else {
divideNumber += 2
}
}
}
if divideNumber > limit {
divideNumber = power
}
divideNumbers.append(divideNumber)
}
return divideNumbers.reduce(0,+)
}