출처: https://school.programmers.co.kr/learn/courses/30/lessons/120897?language=python3
문제 설명
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
제한사항
1 ≤ n ≤ 10,000
입출력 예
n result
24 [1, 2, 3, 4, 6, 8, 12, 24]
29 [1, 29]
입출력 예 설명
입출력 예 #1
24의 약수를 오름차순으로 담은 배열 [1, 2, 3, 4, 6, 8, 12, 24]를 return합니다.
입출력 예 #2
29의 약수를 오름차순으로 담은 배열 [1, 29]를 return합니다.
내가 작성한 코드문
def solution(n):
answer = []
for i in range(1, n+1):
if n % i == 0:
answer.append(i)
return answer
1부터 n+1미만까지 반복문 순회하며
n % i 했을때 0으로 나눠 떨어지면 약수니 answr 리스트에 추가
자바 알고리즘 생각하면서 했다.
다른사람의 풀이
def solution(n):
answer = [i for i in range(1,n+1) if n%i == 0]
return answer
def solution(n):
return [i for i in range(1,n+1) if n%i==0]
리스트 컴프리헨션 사용한 풀이
def solution(n):
return list(filter(lambda v: n % v == 0, [i for i in range(1, n//2+1)])) + [n]
약수 후보 리스트
1. 약수 후보 리스트 생성
[i for i in range(1, n//2+1)]
약수 필터링 (주어진 범위 내에서)
filter(lambda v: n % v == 0, [i for i in range(1, n//2+1)])
최종 약수 리스트 조합
list(...) + [n]