[오늘의 문제] 약수 구하기

shlim55·2025년 10월 24일

코딩테스트

목록 보기
157/223

출처: 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)]

  1. 약수 필터링 (주어진 범위 내에서)
    filter(lambda v: n % v == 0, [i for i in range(1, n//2+1)])

  2. 최종 약수 리스트 조합
    list(...) + [n]

profile
A Normal Programmer

0개의 댓글