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))
다른사람 생각
- cnt=0 으로 초기화
- 하나씩 올라가면서 약수면 cnt += 1
- 판단 이후, b와 일치하면 리턴
- 정상적으로 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
반응형