요 문제는 정렬된 배열 내에서 중복된 값들을 모두 제거하고 난 뒤의 배열 count를 체크한다. 인자로 들어오는 nums는 inout이라 값을 변경하면 외부의 값도 함께 변경되는 친구.
처음에는 배열 내에 _로 치환도 해야하는건가 싶었는데 생각해보니 그럼 [Int]를 만족할 수 없어서 그냥 제거를 했다. (그리고 그게 맞았다.)
func removeDuplicates(_ nums: inout [Int]) -> Int {
let numsCount = nums.count
var number = -101
for (idx, num) in nums.reversed().enumerated() {
if num != number {
number = num
} else {
nums.remove(at: numsCount-idx-1)
}
}
return nums.count
}
나는 그냥 배열을 반대로 돌면서 같은 수가 있으면 지워주는 방법을 택했다. 통과는 됐는데 뭔가 찜찜해서 찾아보니
nums = Array(Set(nums)).sorted()
이렇게 한줄로 퉁치는 것도 있더라... 맞긴 맞지... Set은 중복된 값이 없는 친구들이고 이걸 sorted해서 오름차순 정렬한 뒤에 count만 세면 되는 것... 이렇게 또 한 수 배워간다.
반응형
'Algorithm' 카테고리의 다른 글
Swift로 Leet Code 문제 풀기 - 28. Implement strStr() (Easy) - range(of:)/distance(from: to:) 사용해보기 (0) | 2022.06.30 |
---|---|
Swift로 Leet Code 문제 풀기 - 27. Remove Element (Easy) (0) | 2022.06.29 |
Swift로 Leet Code 문제 풀기 - 21. Merge Two Sorted Lists (Easy) (0) | 2022.06.27 |
Swift로 Leet Code 문제 풀기 - 14. Longest Common Prefix (Easy) (0) | 2022.02.18 |
Swift로 Leet Code 문제 풀기 - 13. Roman to Integer (Easy) (0) | 2022.02.13 |