배열의 길이를 변화시키지 않으면서 중복값을 중복되지 않은 값 뒤로 보내고 중복되지 않은 값의 길이 k를 반환하는 문제
before = 9
cnt = 0
for i in range(len(nums)):
if before != nums[i]:
cnt+=1
before = nums[i]
처음에는 다음과 같이 before값을 업데이트하면서 검사하는 로직을 생각했다.
그런데 여기서 빌드업을 할 때마다 원하는대로 로직이 안 굴러간다는 생각이 들었고
급기야는 nums안의 값을 문자열로 바꿔 문자열을 포함한 리스트를 정렬하려고 했다.
TypeError: '>' not supported between instances of 'int' and 'str'
그래서 다음과 같은 에러를 만나게 됐고 내가 아직 프로그래밍언어에 대한
이해가 모자라다는 사실을 더 깊이 깨닫게 되었다.
결국 혼자 공부하는 시간을 넘겨버려서 디스커션을 통해 몇가지 힌트를 얻었고
class Solution:
def removeDuplicates(self, nums: List[int]) -> int:
cnt = 0
for i in range(1, len(nums)):
if nums[i-1] == nums[i]:
cnt+=1
else:
nums[i - cnt] = nums[i]
return len(nums) - cnt
다음과 같이 정답을 제출하였다.
keep - 제한시간 내에 못풀면 디스커션으로 힌트를 얻고 빠르게 다음 문제로 넘어가기
problem - 문제를 꼼꼼히 읽지 못함, 로직을 생각하기 전에 손가락으로 생각하려고 함
try - 문제를 끝까지 보기, 코딩을 바로 하기 보다는 차분히 앉아서 명상하면서 로직 생각해보기