관리 메뉴

Jerry

[leetcode][파이썬]Remove Element #008 본문

Problem Solving/Algorithm 문제 풀기

[leetcode][파이썬]Remove Element #008

juicyjerry 2024. 5. 23. 23:41
반응형

https://leetcode.com/problems/remove-element/

 

 

 

.


 

 

오늘풀어본 문제는 " Remove Element " 이다.

주어진 리스트 안에 있는 숫자형 원소들 중 주어진 값(val)과 다른 값을 in-place 방식으로 구현해주는 문제이다.

 

 

풀이1 - Two Pointer

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        slow = 0
        for fast in range(len(nums)):
            if nums[fast] != val:
                nums[slow] = nums[fast]
                slow += 1
        return slow

 

 

풀이순서

1. 주어진 리스트의 첫번째 값부터 접근하기 위해 slow = 0 을 할당2

2. for문을 이용해 리스트 긺이만큼 순환해주기

  - 인덱스명은 fast

  2-1. fast 인덱스에 있는 오소가 주어진 값(val)과 다를 대, slow 인덱스 위치 원소와 swap 교체

  2-2. 다음 위치로 이동하기 위해 slow에 + 1

3. for문 종료 후, 조건에 맞는 요소 개수 = slow 이동 횟수이므로, slow 반환

 

 

 

 

풀이2 - 리스트 컴프리헨션

class Solution:
    def removeElement(self, nums: List[int], val: int) -> int:
        nums[:] = [num for num in nums if num != val]
        return len(nums)

 

풀이순서

1. 리스트 컴프리헨션을 이용해 nums의 요소와 val이 일치하지 않는 요소만 남도록 함

2. nums의 길이 반환

 

 

반응형