아침공부 5.18

코변·2022년 5월 17일
0

아침공부

목록 보기
3/4

05:50 ~ 07:00

리트 코드 Remove Element 문제

처음 문제를 접했을 때 정확한 문제 파악을 못해서 몇 번 애를 먹었다.

문제에서 너무 놓치는 부분이 많다. 다음부터는 문제를 읽는 단계,

문제를 푸는 단계를 다 구분해서 문제의 의도를 정확히 파악한 다음

코드를 설계해야겠다. 성격이 너무 급하다. 천천히 해도 된다.

left = 0
right = len(nums)-1
while left <= right:
    if nums[left] == val:
        if nums[right] != val:
            nums[left] = nums[right]
            left+=1
        nums.pop()
        right -=1
    else: left+=1

첫번째 코드 오른쪽과 왼쪽을 바꾸고 리스트의 제일 마지막 값을 pop함수로

버리는 코드다. 애초에 이 문제에서는 k앞의 숫자들이 순서가 어떻든 간에

신경쓰지 않고(순서가 같아야 한다고 생각함) 버리고 싶은 값의 첫번째

인덱스를 K에 담아 반환(나는 리스트를 지움...)하라고 했다.

문제를 차분히 읽고 다시 문제를 풀어보았다.

left = 0
right = len(nums)-1
while left <= right:
    if nums[left] == val:
        if nums[right] != val:
            nums[left] = nums[right]
            nums[right] = val
            left+=1
        else:
            right -=1
    else: left+=1

리스트에 있는 튜토리얼 문제들을 다 풀어보고 나서는 코드들을 리팩터링 해보는 것도 재밌을 것 같다.

profile
내 것인 줄 알았으나 받은 모든 것이 선물이었다.

0개의 댓글