일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 2588번
- 도커
- 코어자바스크립트
- v-if
- v-for
- 이벤트버블링
- 젠킨스
- DevOps
- 파이썬
- v-on
- MSA
- 객체지향의 사실과 오해
- 리스트복사
- 10926번
- 10869번
- hoisting
- 배열파티션
- 쿠버네티스
- v-model
- vue
- Python
- 이벤트캡쳐링
- JavaScript
- 우테코
- 3003번
- 백준
- 프리코스
- LeetCode
- 빅오표기법
- 실행 컨텍스트
Archives
- Today
- Total
새오의 개발 기록
Leetcode 561: 배열 파티션 1 본문
n개의 페어를 이용한 min(a,b)의 합으로 만들 수 있는 가장 큰 수를 출력하라.
https://leetcode.com/problems/array-partition/
// 입력 예제
[1,4,3,2]
// 출력 예제
4
//min(1,2) + min(3,4) = 4
풀이
1. 내림차순 풀이
페어의 min()의 합이 최대가 되려면 결국 min()이 최대한 커야 한다는 뜻이기 땜누에
내림차순으로 정렬한 뒤에 페어를 만들면 최대 min()페어를 유지할 수 있다.
def arrayPairSum(self, nums: List[int]) -> int:
# 내림 차순 정렬
nums.sort(reverse=True)
sum = 0
# 큰 것끼리 묶어서 그 중 작은걸 골라야 가장 큰 값을 구할 수 있다.
# [4,3,2,1]에서 min(4,3), min(2,1)
for i in range(0, len(nums)-1, 2):
sum += min(nums[i], nums[i+1])
return sum
'Algorithm > Leetcode' 카테고리의 다른 글
Leetcode: 24 페어의 노드 스왑 (0) | 2022.10.19 |
---|---|
Leetcode 238: 자신을 제외한 배열의 곱 (0) | 2022.10.07 |
Leetcode 1: 두 수의 합 (0) | 2022.10.03 |
Leetcode 49: 그룹 애너그램 (0) | 2022.10.02 |
Leetcode 819: 가장 흔한 단어 (0) | 2022.10.01 |