https://school.programmers.co.kr/learn/courses/30/lessons/120897
[문제 설명]
정수 n이 매개변수로 주어질 때, n의 약수를 오름차순으로 담은 배열을 return하도록 solution 함수를 완성해주세요.
[나의 풀이]
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]
⭐아이디어: n의 절반 이상인 숫자는 약수가 될 수 없기 때문에, 최대 n//2까지만 검사하여 연산 효율성을 높인다.
def solution(n):
answer = list(set([1, n]))
for i in range(2, int(n ** 0.5) + 1):
if not n % i:
answer.extend(list(set([i, n // i])))
return sorted(answer)
⭐ 모든 약수를 찾기 위해 n의 제곱근까지만 검사하면 된다.
Q. if not n % i:가 if n % i ==0:이랑 같은 표현인?
Q. set()이 어떻게 중복된 값을 제거하는지?
Q. extend()는 무엇을 하는 함수이고, append()와 어떻게 다른지?
'프로그래머스 > 파이썬_입문' 카테고리의 다른 글
가장 큰 수 찾기 (0) | 2024.11.08 |
---|---|
편지 + 비트시프트연산자 << (0) | 2024.11.07 |
한 번만 등장한 문자 (0) | 2024.11.05 |
인덱스 바꾸기 (0) | 2024.11.03 |
영어가 싫어요 (0) | 2024.11.02 |