[Leet.1442] Streak Day 100 🔥

·2025년 3월 20일
0

SwiftAlgorithm

목록 보기
104/105
post-thumbnail

[2161. ```

Partition Array According to Given Pivot


문제 설명

  • pivot기준으로 더 작은 원소는 왼쪽
  • 더 큰 원소는 오른쪽
  • pivot과 값이 같은 원소는 가운데에 고정하기

문제 풀이

좀 쉽게 풀릴 수 있을 것 같아서, 큰 생각안하고 이렇게 진행했는데, 이게 생각보다 pivot값이 가운데에 안박혀서 조금 수정이 들어갔다.


class Solution {
    func pivotArray(_ nums: [Int], _ pivot: Int) -> [Int] {
        var a = [Int]()
        var b = [Int]()

        for item in nums {
            if item < pivot {
                a.append(item)
            } else {
                b.append(item)
            }
        }
        return a + b
    }
}

최종 제출 코드


class Solution {
    func pivotArray(_ nums: [Int], _ pivot: Int) -> [Int] {
        var a = [Int]()
        var b = nums.filter { $0 == pivot }
        print(b)
        for item in nums {
            if item < pivot {
                a.append(item)
            } else if item > pivot {
                b.append(item)
            }
        }

        return a + b
    }
}

굉장히 하위권에 속했으므로, 좀 상위권의 코드를 살펴보자


타인의 코드

class Solution {
    func pivotArray(_ nums: [Int], _ pivot: Int) -> [Int] {
        var answer:[Int] = []
        for i in nums {
            if i < pivot {
                answer.append(i)
            }
        }
        for i in nums {
            if i == pivot {
                answer.append(i)
            }
        }
        for i in nums {
            if i > pivot {
                answer.append(i)
            }
        }
        return answer
    }
}

여기서 중점은 pivot과 크기가 같은 원소를 어떻게 중간에 위치시킬 것인가였는데, 그렇지 않은 경우에는 filter를 사용하여 b배열의 맨 앞에 미리 넣어주고 시작했다. 배열의 길이가 길지 않아서 이 방식이 더욱 효율적으로 작동한 것 같다

profile
기억보단 기록을

0개의 댓글