티스토리 뷰

프로그래머스 - 같은 숫자는 싫어

문제 요약

  1. 0~9로 이루어진 배열 arr이 있을 때, 연속적으로 나타나는 숫자는 하나만 남기고 전부 제거한다.
  2. 중복된 숫자만 제거하되, 원래 배열의 순서는 유지해야한다.

생각

  1. set은 중복은 제거하지만, 순서를 보장하지 않기 때문에 사용할 수 없다.
  2. in으로 look up을 하기에는 처음에 나온 숫자가 나중에 다시 나올 수 있기 때문에 사용할 수 없다.
  3. 따라서 스택을 사용하여 직접 arr를 탐색하며 판단해야한다.

코드

def solution(arr):
    stack = []
    stack.append(arr[0])

    for i in range(1, len(arr)):
        if arr[i] != arr[i - 1]:
            stack.append(arr[i])
    return stack

설명

  1. 값을 직접 비교하기 위해서 첫번째 값을 먼저 생성한 stack에 넣어준다.
  2. loop를 돌면서 루프의 기준이 되는 값과 그전의 값과 비교하여 값이 다르다면, 중복이 없는 수로 판단하여 stack에 그 값을 넣어준다.
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함