Python 알고리즘 인터뷰 - 문제10. 배열 파티션 I
2024. 1. 19. 11:33ㆍ코딩 테스트/파이썬 알고리즘 인터뷰
leetcode 561. Array Partition I - https://leetcode.com/problems/array-partition/description/
n개의의 페어를 이용한 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하라.
예제
입력
[1, 4, 3, 2]
출력
4
풀이
먼저 리스트를 정렬 시킨다. 정렬된 값을 [1, 2, 3, 4]가 된다.
min(a, b) 페어의 합의 패턴을 확인하기 위해 조합을 나열해본다.
확인 결과 (1,2),(3,4),(5,6)... 짝수 순서대로 묶었을 때 가장 큰 값이 나오는 것을 알 수 있다.
i가 짝수일 때 min(nums[i], nums[i+1])는 항상 nums[i] 이므로 합계를 구할 때는 짝수의 값만 더하면 된다. 코드는 다음과 같다.
def arrayPairSum(self, nums):
sum = 0
nums.sort()
for i in range(0, len(nums), 2):
sum += nums[i]
return sum
파이썬은 [::2] 슬라이스를 통해 짝수만을 추출할 수 있고 sum 함수로 리스트를 모두 더할 수 있다. 슬라이싱을 사용한 구현은 다음과 같다.
def arrayPairSum(self, nums):
return sum(sorted(nums)[::2])
'코딩 테스트 > 파이썬 알고리즘 인터뷰' 카테고리의 다른 글
Python 알고리즘 인터뷰 - 문제11. 자신을 제외한 배열의 곱 (0) | 2024.01.22 |
---|---|
Python 알고리즘 인터뷰 - 문제17. 페어의 노드 스왑 (0) | 2024.01.21 |
Python 알고리즘 인터뷰 - 문제15. 역순 연결 리스트 (0) | 2024.01.19 |
Python 알고리즘 인터뷰 - 문제9 세수의 합 (0) | 2024.01.18 |
Python 알고리즘 인터뷰 - 문제8 빗물트래핑 (0) | 2024.01.18 |