이 글에서는 주어진 문제를 해결하기 위한 풀이 방법과 접근 방식을 살펴보겠습니다.
문제 정의
리스트(iterable)가 주어졌을 때, 그 안에 포함된 모든 양수와 음수의 개수를 각각 세어야 합니다.
여기서는 두 가지 접근 방식을 다룹니다.
- 브루트 포스(Brute-force) 방식
- 람다(lambda) 인라인 함수 활용
방법 1 – 브루트 포스 방식
가장 기본적인 방법은 리스트를 순회하면서 각 요소가 0 이상인지 확인하고, 조건에 맞게 카운터를 증가시키는 것입니다. 코드가 직관적이라 초보자도 쉽게 이해할 수 있습니다.
예제
list1 = [1,-9,15,-16,13]
pos_count, neg_count = 0, 0
for num in list1:
if num >= 0:
pos_count += 1
else:
neg_count += 1
print("Positive numbers : ", pos_count)
print("Negative numbers : ", neg_count)출력 결과
Positive numbers : 3 Negative numbers : 2
방법 2 – 람다(lambda)와 filter 함수 활용
두 번째 방법은 lambda와 filter 함수를 조합하는 것입니다. 조건을 만족하는 요소만 걸러낸 뒤 len()으로 개수를 구하므로, 반복문 없이 한 줄로 간결하게 처리할 수 있다는 장점이 있습니다.
예제
list1 = [1,-9,15,-16,13]
neg_count = len(list(filter(lambda x: (x < 0), list1)))
pos_count = len(list(filter(lambda x: (x >= 0), list1)))
print("Positive numbers : ", pos_count)
print("Negative numbers : ", neg_count)출력 결과
Positive numbers : 3 Negative numbers : 2
결론
이 글에서는 리스트에 포함된 양수와 음수의 개수를 세는 두 가지 방법을 알아보았습니다. 가독성이 중요하다면 반복문을 사용한 브루트 포스 방식이, 코드를 간결하게 유지하고 싶다면 람다와 filter를 활용한 방식이 적합합니다. 상황에 맞게 선택하여 사용해 보세요.