Skip to content

[Algorithm] 기사단원의 무기 #28

@hwangJi-dev

Description

@hwangJi-dev

💬 문제

[코딩테스트 연습 - 기사단원의 무기](https://school.programmers.co.kr/learn/courses/30/lessons/136798)

💬 Idea

  • 약수를 구할 때 계속 시간초과 오류가 났다.
  • 그래서 제곱근만큼 잘라서 수를 비교해주었다 !
    • 약수를 판별할 때 해당 수가 곱해져서 원 수가 된다면 → ex) 2*2=4
      • 약수가 2개가 아니라 자기 자신 하나이므로 1을 더해주고
    • 그렇지 않으면 2를 더해준다. 반만 잘라서 비교하는 것이기 때문!

💬 풀이

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,+)
}

Metadata

Metadata

Assignees

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions