Computer >> 컴퓨터 >  >> 프로그래밍 >> Python

Python – 약수 개수가 K 이하인 요소 찾기

리스트에서 약수의 개수가 K 이하인 요소만 골라내야 하는 경우가 있습니다. 이럴 때는 두 개의 매개변수를 받는 함수를 정의하고, 리스트 컴프리헨션(list comprehension)으로 각 요소를 순회하면서 나머지 연산자(%)를 활용해 조건을 판별하면 됩니다.

아래에서 실제 동작 과정을 살펴보겠습니다.

예제 코드

def factors(element, K):
   return len([index for index in range(1, element + 1) if element % index == 0]) <= K

my_list = [63, 112, 168, 26, 68]

print("The list is :")
print(my_list)

K = 5
print("The value for K is ")
print(K)

my_result = [element for element in my_list if factors(element, K)]

print("The result is :")
print(my_result)

실행 결과

The list is :
[63, 112, 168, 26, 68]
The value for K is
5
The result is :
[26]

코드 설명

  • factors 함수는 요소(element)와 기준값(K)을 매개변수로 받습니다.

  • 1부터 해당 요소까지의 범위에서 나머지 연산(element % index == 0)으로 나누어 떨어지는 값, 즉 약수를 모두 구한 뒤 그 개수가 K 이하인지 비교합니다.

  • 비교 결과는 불리언(Boolean) 값으로 반환되어 필터링 조건으로 사용됩니다.

  • 정수형 리스트를 정의하고 콘솔에 출력합니다.

  • 필터링 기준이 되는 K 값을 정의합니다.

  • 리스트 컴프리헨션을 사용해 리스트의 각 요소를 순회하면서, 각 요소를 인자로 전달하여 factors 함수를 호출합니다.

  • 조건을 통과한 요소들만 새로운 리스트로 만들어 변수에 저장합니다.

  • 최종 결과를 콘솔에 출력합니다.

동작 원리 요약

예제에서 63은 약수가 1, 3, 7, 9, 21, 63으로 6개이고, 112와 168도 약수 개수가 5개를 초과하기 때문에 제외됩니다. 반면 26은 약수가 1, 2, 13, 26으로 4개뿐이므로 조건(K=5)을 만족해 최종 결과 리스트에는 [26]만 남게 됩니다.

이처럼 나머지 연산과 리스트 컴프리헨션을 조합하면 복잡한 반복문 없이도 간결하게 원하는 조건의 요소를 추출할 수 있습니다.