Dev/Algorithm

12. [알고리즘] K번째 약수

VIPeveloper 2021. 4. 29. 22:12
728x90
반응형

내 생각

1. 약수의 리스트를 구함

2. 정렬

3. k-1 번째 수를 리턴해준다.

구현

# K번째 약수
def solution(a,b):
    def sol1(n):
        li = list()
        for i in range(1,n):
            if n % i == 0:
                li.append(i)
        return li


    def sol2(li,b):
        if len(li) < b:
            return -1
        li.sort()
        return li[b-1]


    li = sol1(a)
    answer = sol2(li,b)
    return answer

print(solution(6,3))
print(solution(25,5))
print(solution(100,5))
print(solution(100,7))
print(solution(1000,12))

다른사람 생각

  1. cnt=0 으로 초기화
  2. 하나씩 올라가면서 약수면 cnt += 1
  3. 판단 이후, b와 일치하면 리턴
  4. 정상적으로 for 문이 다 돌았다면, b까지 오는 약수의 갯수를 초과한 것이므로 -1 리턴
# K번째 약수
def solution(a,b):
    cnt = 0
    for i in range(1,a+1):
        if a % i == 0:
            cnt += 1
        if cnt == b:
            return i
    return -1

print(solution(6,3))
print(solution(25,5))
print(solution(100,5))
print(solution(100,7))
print(solution(1000,12))
728x90
반응형

'Dev > Algorithm' 카테고리의 다른 글

14. [알고리즘] K번째 큰 수  (0) 2021.04.29
13. [알고리즘] K번째 작은 수  (0) 2021.04.29
[백준] 플러드필  (0) 2021.04.01
[백준] 그래프의 탐색 (DFS, BFS)  (0) 2021.03.27
[백준] 그래프와 BFS  (0) 2021.03.22