[Leetcode/Easy] 배열 파티션 1 (561. Array Partition 1, Swift)
2024. 7. 5. 13:26ㆍAlgorithm
https://leetcode.com/problems/array-partition/description/
🤔 문제 설명
2n개의 정수 배열이 주어지면, n개의 묶음 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하세요.
nums = [1,4,3,2]
// 4 : min(1, 2) + min(3, 4) = 1 + 3 = 4
💡 풀이
# 첫 번째 생각
정말 단순하게 생각해보면, 입력받은 nums 배열을 정렬시킨 후 앞에서부터 두 쌍씩 페어를 시켜준 다음, 각 묶음에서 최소값들의 합을 구하면 올바른 답이 도출될 것이다.
# 두 번째 생각
하지만 생각해보면, 결국 min 함수를 적용하지 않고도 리스트를 정렬시켰다면 인덱스 값에 의해 값을 도출할 수 있다.
nums[0], nums[2], nums[4]....값들이 결국은 정렬을 시킨 후의 값이기 때문에, 이 값들이 min값과 같기 때문에 짝수 인덱스 값의 합을 구하면 되겠다.
🧑🏻💻 코드 (Swift ver.)
💡 Runtime : 108ms (Beats 75.56%), Memory : 16.49MB (Beats 15.48%)
class Solution {
func arrayPairSum(_ nums: [Int]) -> Int {
var sum = 0
let sortedNums = nums.sorted()
for i in 0..<sortedNums.count {
if (i%2 == 0) { sum += sortedNums[i] }
}
return sum
}
}