반응형
이번에 풀어볼 문제는 프로그래머스의 스택/큐 부분에 있는 '같은 숫자는 싫어'이다.
간단하게 설명하면 1 1 2 3 4 이런식으로 값이 존재하면 1 2 3 4처럼 연속된 숫자를 제외하고 반환하면 되는데, 가장 먼저 넣은 것이 가장 앞에 들어가서 가장 최근에 들어간게 가장 마지막에 존재하는 스택을 잘 활용하면 쉽게 풀 수 있다.
먼저 입력받은 배열을 하나씩 순회해야 한다.
for i in arr:
다음으로, 가장 초기값은 중복된 값이 없을 테니 정답으로 쓸 새로운 리스트에 값이 없다는 것과 동일하다. 이 생각 그대로 코드를 짜면 다음과 같이 작성할 수 있다.
answer = []
for i in arr:
if not answer:
answer.append(i)
이제 중복 검사를 해야 하는데 스택 자료구조에서는 가장 마지막에 들어온 값이 가장 뒤에 있는 것을 알 수 있다.
파이썬의 리스트를 사용할 때, 마지막 원소 값을 갖고 오고 싶을 때는 인덱싱을 활용할 수 있는데, list_name[-1] 과 같이 사용하여 불러올 수 있다.
즉, 마지막에 존재하는 값과 내가 추가하고자 하는 값이 동일하다면 중복된 값이라는 것이다.
answer = []
for i in arr:
if not answer:
answer.append(i)
elif answer[-1] != i:
answer.append(i)
전체 코드
def solution(arr):
answer = []
for i in arr:
if not answer:
answer.append(i)
elif answer[-1] != i:
answer.append(i)
return answer'LeetCode & Programmers' 카테고리의 다른 글
| [Programmers] 탐욕법(Greedy) - 체육복 (0) | 2026.05.27 |
|---|---|
| [Programmers] 해시 - 포켓몬 (0) | 2026.05.27 |
| [Programmers] 해시 - 완주하지 못한 선수 (0) | 2026.05.26 |
