📖 스택/큐 > 같은 숫자는 싫어

  • 연속된 중복 숫자 제거
  • 원래 입력되어 있는 순서는 유지
  • [1,3,1,3] 같이 떨어져있는 중복 숫자는 가능

📖What I thought

  • 연속된 중복을 제거 & 순서 유지 → Set()이나 in/not in으로는 불가능
  • 그냥 리스트 하나 만들어서 중복 아니면 새 리스트에 값 넣고 중복이면 패스하자 → 늘 새 리스트의 가장 마지막 값top과 비교 → 이건 stack이야!!
  • 즉, stack의 가장 마지막 값이랑 현재 비교값이 같으면 중복, 다르면 중복X stack에 넣어줘

📖풀이

📎loop

def solution(arr):
    st = []
    
    for a in arr:
        if st and st[-1] == a:
            continue
        else:
            st.append(a)
    
    return st
  • 새로운 리스트를 하나 만들고 거기에 연속된 중복 아닌 것들 넣기
  • 그러고 arr리스트를 loop 돌면서 st의 마지막 원소와 비교
  • st이 비어있으면 어차피 중복이 아님

📎loop & list slicing

def solution(arr):
    st = []
    
    for a in arr:
        if st[-1:] == [a]:
            continue
        else:
            st.append(a)
    
    return st
  • list slicing은 슬라이싱하려는 리스트가 비어있어도 가능 → 그냥 빈 리스트 return
  • list slicing을 하면 st이 비어있는지에 대한 체크를 하지 않아도 됨
  • 대신 return 값이 리스트 형태니까 비교도 리스트 형태로 비교

📖What I learned

  1. slicing을 하려는 sequence가 비어있다면 그냥 빈 sequence를 return함!!

📖관련 지식

📎Stack

📎Sequence Slicing