[2161. ```
Partition Array According to Given 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
배열의 맨 앞에 미리 넣어주고 시작했다. 배열의 길이가 길지 않아서 이 방식이 더욱 효율적으로 작동한 것 같다