양수와 음수가 섞여 있는 숫자 리스트 nums가 있다고 가정해 봅시다. 이 리스트를 업데이트하여 최종 결과가 각 요소의 절댓값만 담도록 만들어야 합니다.
예를 들어, 입력이 nums = [5,-7,-6,4,6,-9,3,-6,-2]라면 출력은 [5, 7, 6, 4, 6, 9, 3, 6, 2]가 됩니다. 즉, 모든 음수 부호가 제거된 값들이 반환됩니다.
문제 해결 접근 방식
이 문제는 Python의 map() 함수와 람다(lambda) 표현식을 활용하면 매우 간결하게 해결할 수 있습니다. 단계별로 살펴보면 다음과 같습니다.
- x를 인자로 받아 abs(x)를 반환하는 익명 함수(람다 함수)를 정의합니다.
- map() 메서드를 사용하여 nums 리스트의 각 요소 e를 l(e)로 변환합니다.
- map 객체를 list()로 감싸서 결과를 리스트 형태로 반환합니다.
Python에서 abs() 내장 함수는 숫자의 절댓값을 계산하며, map()은 첫 번째 인자로 전달된 함수를 두 번째 인자로 전달된 반복 가능한(iterable) 객체의 모든 요소에 차례대로 적용합니다. 이 두 가지를 조합하면 별도의 반복문 없이 한 줄로 문제를 해결할 수 있습니다.
예제 코드
아래 구현 예제를 통해 더 자세히 이해해 보겠습니다.
def solve(nums): return list(map(lambda x:abs(x), nums)) nums = [5,-7,-6,4,6,-9,3,-6,-2] print(solve(nums))
입력
[5,-7,-6,4,6,-9,3,-6,-2]
출력
[5, 7, 6, 4, 6, 9, 3, 6, 2]
추가 팁: 다른 구현 방법
람다 함수 대신 abs() 함수를 직접 map()에 전달하는 것도 가능합니다. 코드가 더욱 간결해집니다.
def solve(nums): return [abs(x) for x in nums]
위와 같이 리스트 컴프리헨션(list comprehension)을 사용하는 방법도 있으며, 가독성 측면에서 선호되기도 합니다. 상황에 맞게 다양한 방법을 활용해 보시기 바랍니다.