같은 숫자는 싫어 문제 바로가기

나의 풀이

def solution(arr):
    answer = [arr[0]]
    from collections import deque
    arr = deque(arr[1:])
    while arr:
        temp = arr.popleft()
        if temp != answer[-1]:
            answer.append(temp)        
    return answer

고수의 풀이

def no_continuous(s):
    a = []
    for i in s:
        if a[-1:] == [i]: continue
        a.append(i)
    return a

CODE REVIEW

  1. queue을 활용한 문제.
  2. for문으로 arr의 원소 하나씩 뽑아올수도 있겠지만, 시간초과우려가 있기에 deque을 활용했다.
  3. arr.pop(0)보다 deque을 이용해서 arr.popleft()가 탐색 속도가 빠르다.
  4. answer = [arr[0]] arr = deque(arr[1:])로 설정하지 않으면 indexError가 발생하기 때문에 주의해야 한다.
  5. 이런 indexError을 효과적으로 방지하기 위해 고수의 풀이에서는 a[-1:]을 이용했다.