728x90
반응형
1. 문제 설명
2. 풀이과정
- deque 자료구조를 사용하기 위해 deque 모듈을 불러온다. from collections import deque
- deque 자료구조를 사용해 큐를 생성한다. queue = deque()
- 문자열 배열을 하나씩 추출하며 for i in operations
- 문자열을 공백을 기준으로 분리하여 리스트로 저장한다. li = list(i.split())
- 만약 명령어가 I로 시작하면 if (li[0] == "I")
- 값을 정수로 큐에 추가한다. queue.append(int(li[1]))
- 반면에 명령어가 D로 시작하면 else
- 큐에서 원소를 삭제하는 건데 큐가 공백이 아닐 때만 가능하다. if (len(queue) != 0)
- 만약 값이 1이면 if (int(li[1]) == 1)
- 제일 뒤의 값(최댓값)을 삭제한다. queue.pop()
- 반면에 값에 -1이면 else
- 제일 앞의 값(최솟값)을 삭제한다. queue.popleft()
- 큐에서 값을 삭제할 때, 앞과 뒤에서 최솟값과 최댓값을 수월하게 삭제하기 위해 큐를 매명령어 수행 후마다 오름차순으로 정렬한다. queue = deque(sorted(queue))
- 모든 명령어를 완료하고 난 뒤, 큐가 공백이면 if (len(queue) == 0)
- 정답에 [0, 0]을 저장한다. answer = [0, 0]
- 반면에 큐가 공백이 아니라면 else
- 정답에 [최댓값, 최솟값]을 저장한다. answer = [max(queue), min(queue)]
반응형
3. 소스코드
from collections import deque
def solution(operations):
answer = []
queue = deque()
for i in operations:
li = list(i.split())
if (li[0] == "I"):
queue.append(int(li[1]))
else:
if (len(queue) != 0):
if (int(li[1]) == 1):
queue.pop()
else:
queue.popleft()
queue = deque(sorted(queue))
if (len(queue) == 0):
answer = [0, 0]
else:
answer = [max(queue), min(queue)]
return answer
728x90
반응형
'프로그래머스 > Python' 카테고리의 다른 글
[프로그래머스] 전화번호 목록 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.03 |
---|---|
[프로그래머스] 덧칠하기 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.02 |
[프로그래머스] 실패율 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.08.01 |
[프로그래머스] 타겟 넘버 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.31 |
[프로그래머스] 정수 삼각형 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.29 |
[프로그래머스] 피로도 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.28 |
[프로그래머스] [1차] 뉴스 클러스터링 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.27 |
[프로그래머스] 프로세스 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트 (0) | 2023.07.26 |