문제
https://school.programmers.co.kr/learn/courses/30/lessons/12906?language=python3
from collections import deque
def solution(arr):
queue = deque() # 큐 생성 및 초기화 : 비어있는 상태 [O(1)]
for num in arr: # 배열에서 num 갯수만큼 반복
# 해당 생태일 때 큐에 넣는다.
# 1. not queue : 큐가 비어 있는 경우
# 2. queue[-1] != num : 새로 들어가는 숫자가 queue의 마지막 숫자랑 같지 않을 때 (같을때는 넣으면 안됌)
if not queue or queue[-1] != num:
queue.append(num)
return list(queue)
queue = deque()
- Python의 deque를 사용해 큐를 생성한다.
- deque는 양쪽 끝에서 삽입 및 삭제를 O(1)로 지원하는 자료구조이다.
- 초기에는 비어 있는 상태이며, 초기화를 하는 코드이기도 하다.
not queue:
파이썬에서 조건문으로, queue가 비어 있을 때 참(True)이 되는 조건을 의미한다.
여기서 queue는 리스트, 큐, 또는 다른 컬렉션 자료형일 수 있다.
즉, queue가 비어 있다면 (queue의 길이가 0일 경우) not queue는 True가 되어 조건문이 실행된다.
queue[-1] != num
- queue[-1]은 큐의 마지막 숫자를 의미한다.
- 현재 숫자 num이 큐의 마지막 숫자와 다를 때만 큐에 추가한다.
return list(queue)
- 최종적으로 큐에 저장된 값들을 리스트로 변환하여 반환합니다.
- deque는 반환 시 리스트 형식이 아니므로 list()를 사용하여 변환합니다.
* 문제에서 리스트 형식으로 반환해야한다 명시되어 있음.
728x90
'Algorithm > 코딩 테스트' 카테고리의 다른 글
그리디 코테 파이썬 문제 (1) | 2025.01.26 |
---|---|
[프로그래머스 Lv.1] 없는 숫자 더하기 (0) | 2025.01.20 |