leetcode 27. Remove Element

Doyeon Kim·2022년 3월 12일

코딩테스트 공부

목록 보기
30/171

문제 링크 : 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

profile
성장하고 도전하는 개발자. 프로그래밍 좋아하세요?

0개의 댓글