처음 문제를 접했을 때 정확한 문제 파악을 못해서 몇 번 애를 먹었다.
문제에서 너무 놓치는 부분이 많다. 다음부터는 문제를 읽는 단계,
문제를 푸는 단계를 다 구분해서 문제의 의도를 정확히 파악한 다음
코드를 설계해야겠다. 성격이 너무 급하다. 천천히 해도 된다.
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
리스트에 있는 튜토리얼 문제들을 다 풀어보고 나서는 코드들을 리팩터링 해보는 것도 재밌을 것 같다.