LeetCode #26

Kiyong Lee·2022년 1월 7일
0

leetcode

목록 보기
7/20

26. remove_duplicates_from_sorted_array


1. 코드

from typing import List

class Solution:
    def removeDuplicates(self, nums: List[int]) -> int:
        
        if len(nums) == 0 : return 0
        
        k = 1
        idx = 0
        
        while idx < len(nums)-1 :
            if nums[idx] != nums[idx+1] :
                nums[k] = nums[idx+1]
                k+=1
            idx+=1
        
        return k

2. 풀이

  1. nums의 길이가 0일 경우는 0 리턴

  2. 처음에 생각한 건

for idx in len(nums) :
    if nums[idx] != nums[idx+1] :

이거인데 이럴 경우 list out of range가 발생해서 while문을 쓰기로 함

  1. 다만, while문할때도 len(nums)까지 하면 범위가 벗어났다고 뜨기 때문에 조건에 len(nums)-1 설정

  2. 그리고 가장 헷갈렸던 부분인데, 문제를 제대로 안 읽은 바람에(가뜩이나 영어도 못해서;)
    요소를 삭제해서 리스트 길이를 계속 줄여나갔다.
    구글에는 번역의 신이 있기 때문에 도움을 받았고, 리스트 길이는 변하지 않고 새로 갱신해 나아가는거라는 걸 알게 되었다.

  3. idx는 반복문마다 증가되므로 새로운 인덱스를 갱신할 변수가 필요했고, 나는 k로 설정

  4. 그래서 앞뒤를 비교하여 두개가 다르다면 뒤의 요소를 앞에거에다가 대입했다

  5. 그래서 값이 갱신될때마다 k1씩 증가하고 그 때의 k값은 문제에서 말한 final result가 된다

profile
ISTJ인 K-개발자

0개의 댓글