[Swift] [55일차] 1877_LEET pair만들기

·2025년 1월 31일
0

SwiftAlgorithm

목록 보기
58/105
post-thumbnail

1877. Minimize Maximum Pair Sum in Array

문제 설명

  1. 짝수길이의 숫자배열이 주어진다.
  2. 그 배열에서 페어끼리 묶어준다
  3. 대신 그냥 묶어주는게 아니라 최대 쌍 합을 최소화한다는 얘기가 뭔소리인가 했는데,
  4. 최대값이랑 최소값끼리 페어를 묶어주면 완성된다. 제일큰값끼리 묶지말고, 페어끼리의 합을 최소화하라는 소리인듯 하다

문제 풀이

  1. 그래서 이전 펠린드롬때 봤듯이 left,right를 활용해보기로 했다.
  2. 배열을 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한것에서 반복문돌려주면서 인덱스로 조정을 해준 듯하다

profile
기억보단 기록을

0개의 댓글