문제 링크 : https://leetcode.com/problems/remove-element/
이전에 풀었던 문제와 비슷한 문제이다..
nums 배열과 숫자(int) val이 주어질 때, nums에서 val을 제외한 나머지 배열이 얼마나 있는지 구하는 문제이다.
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
for j in range(len(nums)):
if nums[j] != val:
i+=1
return i+1
처음에 구상한 것은 nums를 탐색하면서 nums와 val이 같지 않은 경우 i에 1을 증가시켜 증기시킨 횟수를 반환하는 방식으로 짰는데..
첫번째 테.케 (nums =[3,2,2,3], val =3) 를 돌려보니 [3,2,2]가 나왔다.... tq 왜 그러지...
왜 그렇지..?
아직도 모르겠다 tq
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
i = 0
for j in range(len(nums)):
if nums[j] != val:
nums[i] = nums[j]
i+=1
return i
구글링보고 수정한 코드..
two pointer method가 있다.
근데 사실 아직도 코드를 구성하는게 쉽지 않다....
짜증
결과 :
113 / 113 test cases passed.
Status: Accepted
Runtime: 48 ms
Memory Usage: 13.8 MB
더 쉬운 방법은 파이썬 내장함수 count를 사용하는 방법이 있다.
class Solution:
def removeElement(self, nums: List[int], val: int) -> int:
while nums.count(val):
nums.remove(val)
return len(nums)
nums 안에 val을 카운트하여 제거하는 방법이다.
113 / 113 test cases passed.
Status: Accepted
Runtime: 67 ms
Memory Usage: 13.9 MB
런타임은 두번째 방법이 조금? 길었지만..
이정도 차이라면.. 두번째 방법도 나쁘지 않은듯하다... 아니 사실 훨씬 쉬움 tp