같은 숫자는 싫어 문서의 문제 1 풀이 코드다. if __name__ == "__main__": 아래가 자체 테스트다.

"""같은 숫자는 싫어 (프로그래머스 12906) 풀이와 검증."""
import random
from itertools import groupby


def solution(arr):
    answer = []
    for x in arr:
        if not answer or answer[-1] != x:
            answer.append(x)
    return answer


def by_groupby(arr):
    return [k for k, _ in groupby(arr)]


def buggy(arr):
    """7단계의 흔한 실수: arr[i - 1]과 비교 (i = 0에서 끝 원소와 비교한다)."""
    return [arr[i] for i in range(len(arr)) if arr[i] != arr[i - 1]]


if __name__ == "__main__":
    assert solution([1, 1, 3, 3, 0, 1, 1]) == [1, 3, 0, 1]
    assert solution([4, 4, 4, 3, 3]) == [4, 3]
    assert solution([4, 4, 1, 1, 1, 4]) == [4, 1, 4]
    assert buggy([4, 4, 1, 1, 1, 4]) == [1, 4]      # 첫 4를 빼먹는다
    rng = random.Random(12906)
    for _ in range(2000):
        arr = [rng.randint(0, 9) for _ in range(rng.randint(1, 40))]
        assert solution(arr) == by_groupby(arr)
    print("ALL CHECKS PASSED")