알고리즘 연습 [같은 숫자는 싫어]

같은 숫자는 싫어

문제

no_continuous함수는 스트링 s를 매개변수로 입력받습니다.

s의 글자들의 순서를 유지하면서, 글자들 중 연속적으로 나타나는 아이템은 제거된 배열(파이썬은 list)을 리턴하도록 함수를 완성하세요.
예를들어 다음과 같이 동작하면 됩니다.

s가 '133303'이라면 ['1', '3', '0', '3']를 리턴
s가 '47330'이라면 [4, 7, 3, 0]을 리턴

나의 풀이

def no_continuous(s):
    for i in range(10):
        while s.find(str(i)*2) > -1:
            s = s.replace(str(i)*2, str(i))
    return list(s)

IndexError: list index out of range 에러가 자꾸나서 아예 방법을 바꿔 00에서 99까지의 숫자들이 반복되면 한개로 줄이는 식으로 풀었다.ㅜㅜ

다른 풀이

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

다른 풀이2

def no_continuous(s):
    return [s[i] for i in range(len(s)) if s[i] != s[i+1:i+2]]