문제
[LeetCode - The World's Leading Online Programming Learning Platform
Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.
leetcode.com](https://leetcode.com/problems/remove-element/description/?envType=study-plan-v2&envId=top-interview-150%5D)
풀이
- 배열을 순회하면서 요소와 주어진 val 을 비교한다.
- 요소와 val이 다르면 val 요소가 제거된 배열의 길이를 나타내는 변수에 1을 추가한다.
- 만약 val과 같은 요소가 있으면 해당 요소는 다른 정수로 변경해준다.
def removeElement(self, nums: List[int], val: int) -> int:
k = 0
for i in range(len(nums)):
if nums[i] != val:
nums[k] = nums[i]
k += 1
return k
처음에 접근을 요소와 val이 같은 경우, count 변수에 1을 추가해준다음에 전체 길이에서 count 변수를 뺀 값을 반환해주고,
해당 요소는 다른 임의의 숫자로 변경해주려고 했다.
하지만, 다른 임의의 숫자로 변경해주는 부분에서 예외 케이스를 고려해야하 부분도 많아져서 방법을 달리 생각해보았다.
이 문제에서 중점을 둬야할 것은 val 요소와 같지 않는 요소의 갯수를 구하는 것이다.
그러므로 val과 요소가 같지 않을 경우 로직을 검증하는 식으로 접근해야한다.
- 반환되는 k값을 0으로 초기화한 후 값이 같지 않을 때, k를 1 추가해준다.
- 이말은 즉, 만약 값이 같은 경우에는 k에 아무런 변화가 없으므로, k가 의미하는 것은 요소와 val이 같은 index를 의미하기도 한다.
때문에 값이 같지 않을 때, k의 인덱스에 해당하는 요소에 순회중인 현재 index에 해당하는 요소를 할당하면 된다.
- k라는 변수를 포인터라고 생각하면서 접근한 문제인 것 같다.
'Leetcode' 카테고리의 다른 글
[Leetcode]_121. Best Time to Buy and Sell Stock (0) | 2023.09.21 |
---|---|
[Leetcode]_169. Majority Element (0) | 2023.09.18 |
[Leetcode]_80. Remove Duplicates from Sorted Array 2 (0) | 2023.09.16 |
[Leetcode]_26. Remove Duplicates from Sorted Array (0) | 2023.09.14 |
[Leetcode]_88. Merge Sorted Array (Two Pointer) (0) | 2023.09.13 |