n 개의 페어를 이용한 min(a,b)의 합으로 만들 수 있는 가장 큰 수를 출력하라.
보면 이해가 안가는 문구이지만, 예제를 보고 이해하였다. 2n 개의 원소가 주어지는데 이를 n개의 min(a,b) 페어로 만든 후 그 페어들의 합이 가장 큰 경우를 출력하라는 뜻이다.
이를 해결하는 방법은 아주 간단하다. 배열을 작은 수 부터 정렬하는 것이다. 그렇게 하면 앞에서 부터 2개씩 끊었을 때, 최소 값이 더 작아지는 것을 막을 수 있다.
전체 코드는 다음과 같다.
class Solution:
def arrayPairSum(self, nums: List[int]) -> int:
nums.sort()
answer = 0
for i in range(0, len(nums), 2):
answer += nums[i]
return answer
'코딩테스트 > 알고리즘' 카테고리의 다른 글
[Q. 12] 주식을 사고팔기 가장 좋은 시점 (0) | 2023.03.21 |
---|---|
[Q. 11] 자신을 제외한 배열의 곱 (0) | 2023.03.21 |
[Q. 09] 세 수의 합 (0) | 2023.03.20 |
[Q. 08] 빗물 트래핑 (0) | 2023.03.20 |
[Q. 07] 두 수의 합 (0) | 2023.03.20 |