- 연속된 중복 숫자 제거
- 원래 입력되어 있는 순서는 유지
- [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
- slicing을 하려는 sequence가 비어있다면 그냥 빈 sequence를 return함!!
📖관련 지식