https://school.programmers.co.kr/learn/courses/30/lessons/12906
약 5분
스택 자료구조를 사용했다.
스택의 마지막 원소와 현재 숫자가 다를때만 스택에 숫자를 추가해주면 된다.
def solution(arr):
answer = [arr[0]]
for num in arr:
if answer[-1] != num:
answer.append(num)
return answer
answer가 empty array 상태일때는 answer[-1] 로 비교하면 indexing errorr가 발생한다.
그래서 처음에 answer=[arr[0]] 과 같이 첫번째 원소를 넣어 초기화 해준뒤 코드를 작성했다.
그런데 다른 사람들 풀이를 보니 …. answer[-1:] 형태로 값을 비교한 풀이가 있었다.
answer[-1:] 로 리스트를 만들어 값을 비교해주면 인덱싱 오류가 발생하지 않는다!
def solution(arr):
answer = []
for num in arr:
if answer[-1:] != [num]:
answer.append(num)
return answer
물론 매번 비교할때마다 맨 마지막 원소로 리스트를 만들어줘야 하기 때문에, 코드 효율성 부분에서는 2배정도 시간이 더 소요되었다. 리스트 생성할때마다 메모리 할당 과정이 추가로 소요되기 때문!
def solution(arr):
answer = []
for num in arr:
if len(answer) == 0 or answer[-1] != num:
answer.append(num)
return answer
아니면 or 연산자로 answer가 empty array일때 조건을 추가해줘도 된다.