1877. Minimize Maximum Pair Sum in Array
문제 설명
- 짝수길이의 숫자배열이 주어진다.
- 그 배열에서 페어끼리 묶어준다
- 대신 그냥 묶어주는게 아니라 최대 쌍 합을 최소화한다는 얘기가 뭔소리인가 했는데,
- 최대값이랑 최소값끼리 페어를 묶어주면 완성된다. 제일큰값끼리 묶지말고, 페어끼리의 합을 최소화하라는 소리인듯 하다
문제 풀이
- 그래서 이전 펠린드롬때 봤듯이 left,right를 활용해보기로 했다.
- 배열을 sorting한다음에 nums[left] nums[right]를 페어로서 합해주면서 최대값을 초기화시켜주었다.
class Solution {
func minPairSum(_ nums: [Int]) -> Int {
var nums = nums
nums.sort(by: <)
var answer = 0 // 최소값으로해주고
var left = 0
var right = nums.count - 1
while left < right {
let sum = nums[left] + nums[right]
answer = max(answer, sum)
left += 1
right -= 1
}
return answer
}
}
타인의코드
class Solution {
func minPairSum(_ nums: [Int]) -> Int {
let sorted = nums.sorted()
var left = 0
var right = sorted.count-1
var res = 0
while left < right {
let sum = sorted[left] + sorted[right]
res = max(res, sum)
left += 1
right -= 1
}
return res
}
}
처음으로 엄청나게 동일하게 풀은것 같았다.
이런 문제는 애초에 left,right 전용으로 만든 문제 같기도 ?
반대로 좀 느린 코드중에서는 그냥 sorting한것에서 반복문돌려주면서 인덱스로 조정을 해준 듯하다