코딩테스트/python

[programmers/python] 연속된 숫자 제거하기 – 스택/큐

zyin 2025. 5. 28. 08:27

문제 설명

- url : https://school.programmers.co.kr/learn/courses/30/lessons/12906

배열 arr에서 연속적으로 같은 숫자가 반복되는 경우, 하나만 남기고 모두 제거해야 한다. 숫자의 등장 순서는 유지해야 하며, 단순한 중복 제거가 아니다.

예시

arr = [1, 1, 3, 3, 0, 1, 1]  # 결과: [1, 3, 0, 1]
arr = [4, 4, 4, 3, 3]        # 결과: [4, 3]

풀이 코드

def solution(arr):
    if not arr:
        return []

    pre = arr[0]
    answer = [pre]

    for it in arr[1:]:
        if it != pre:
            answer.append(it)
            pre = it

    return answer

핵심 아이디어

  • 배열을 순차적으로 순회하며,
  • 이전 값과 다를 때만 결과 리스트에 추가한다.
  • 시간복잡도는 O(n)으로 효율적이다.