728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/42628?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
난이도
LV 3
문제 설명
I 숫자 형태일때는 큐에 해당 숫자를 삽입한다.
D 1 형태일때에는 큐에서 최댓값을 삭제한다.
D -1 형태일때에는 큐에서 최솟값을 삭제한다.
만약 큐가 비어있다면 [0,0] 출력 아니라면 [최대값, 최소값] return 해준다.
접근법
- 시간을 최대한 줄이기 위해 항상 맨 앞이 최소가 되는 heapq를 사용한다.
- 파이썬은 문자열에 문자를 인덱스로 직접 접근이 가능하기에 s[0]에 대해 I 인지 D인지 확인후 처리를 해준다.
- 만약 I라면 슬라이싱을 이용하여 숫자부분을 int로 변환해 큐에 삽입해준다.
- 만약 D이고 큐가 비어있지 않다면 1이면 최대값 삭제, 2이면 최솟값을 삭제한다.
- 이때 heapq를 이용했기에 맨앞의 숫자가 가장 작아 heappop으로 손쉽게 제거 가능하다.
- 큐가 비어있지 않다면 [최대값, 최소값] return, 비어있다면 [0,0]을 return해준다.
코드
import heapq
def solution(operations):
answer = []
q = []
for s in operations:
if s[0] == "I" :
heapq.heappush(q, int(s[2:]))
elif s[0] == "D":
if q:
if s[2:] == "1":
q.remove(max(q))
else:
heapq.heappop(q)
if q:
return [max(q), min(q)]
else:
return [0,0]
728x90
반응형
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 야근 지수 by 파이썬 (Python) (0) | 2023.08.06 |
---|---|
[프로그래머스] 최고의 집합 by 파이썬 (Python) (0) | 2023.08.04 |
[프로그래머스] 정수 삼각형 by 파이썬 (Python) : 동적 계획법 (Dynamic programming) (0) | 2023.07.31 |
[프로그래머스] 2019 KAKAO BLIND RECRUITMENT 길 찾기 게임 by 파이썬 (Python) : 트리 순회 (0) | 2023.07.28 |
[프로그래머스] 여행 경로 by 파이썬(Python) : DFS (0) | 2023.07.27 |