본문 바로가기
알고리즘/프로그래머스

프로그래머스 Lv1 같은 숫자는 싫어(python)

by 개발하는 호랑이 2024. 1. 29.

같은 숫자는 싫어

풀이

제목은 같은 숫자가 싫다고 하지만, 내용을 읽어보면 연속된 같은 숫자가 싫다는 것을 알 수 있다.
따라서 숫자가 연속된 것, 예시로 222212332211 이 있으면, 212321 이 돼야 한다는 것이다.
난 이방법을 stack의 방법과 엮어서 생각을 해보았고, 반쪽짜리 stack의 방식으로 진행했다.

# 0 ~ 9까지의 숫자, 연속적으로 나타나면 하나만 남기기
# return 시 배열의 순서를 그대로 해야하므로 list(set(배열))은 안됨
# 반쪽자리 stack을 이용해보자
def solution(arr):
    stack = [-1]
    for i in range(len(arr)):
        if stack[-1] != arr[i]:
            stack.append(arr[i])
    return stack[1:]

다른 사람 풀이

워낙 간단한 문제여서, 다른 사람이 푼 방법도 내가 푼 풀이 방법과 별반 다를 바 없었다.

def no_continuous(s):
    # 함수를 완성하세요
    a = []
    for i in s:
        if a[-1:] == [i]: continue
        a.append(i)
    return a