우당탕탕 개발일지
[힙(Heap)] 프로그래머스 level 3 이중우선순위큐 (Python 파이썬) 본문
💡문제 링크
💡문제 분석 요약
연산 operations 리스트가 매개변수로 주어진다.
operations에 나온대로 큐에 연산을 수행한다.
1. "I 숫자" : 큐에 숫자 삽입
2. "D 1" : 큐에서 최댓값 삭제
3. "D -1" 큐에서 최솟값 삭제
이 연산을 모두 마치고 난 뒤 큐에 남은 최댓값과 최솟값을 출력한다.
큐에 남은 게 없다면 [0, 0]을 출력한다.
💡알고리즘 설계
1. if문을 사용해서 연산에 대한 코드를 구현한다.
- 1. "I 숫자" : 큐에 숫자 삽입 -> append
- 2. "D 1" : 큐에서 최댓값 삭제 -> a[:-1]
- 3. "D -1" 큐에서 최솟값 삭제 -> a[1:]
2. 연산이 마칠 때마다 오름차순 정렬해준다.
3. 큐가 비어있으면 [0, 0] 반환하고, 아니면 [최댓값, 최솟값] 반환한다.
💡코드
def solution(operations):
answer = []
for o in operations:
if o[0] == "I":
answer.append(int(o[2:]))
elif o == "D 1":
answer = answer[:-1]
else:
answer = answer[1:]
answer.sort()
if answer == []:
return [0, 0]
else:
return [answer[-1], answer[0]]
💡 다른 풀이
나는 이렇게 간단하게 풀었는데, 카테고리가 힙(Heap)인 만큼 힙 자료구조로 푼 풀이들이 많았다.
💡 느낀점 or 기억할정보
갈 길이 멀구나..
'알고리즘' 카테고리의 다른 글
[해시] 프로그래머스 level 3 야근지수 (Python 파이썬) - 해결 못 함 (1) | 2024.10.03 |
---|---|
[동적계획법(Dynamic Programming)] 프로그래머스 level 3 정수 삼각형 (Python 파이썬) (0) | 2024.09.29 |
[완전탐색] 프로그래머스 level 2 피로도 (Python 파이썬) (1) | 2024.09.20 |
[구현] 프로그래머스 level 2 피보나치 수 (Python 파이썬) (0) | 2024.09.20 |
[BFS/DFS] 프로그래머스 COS Pro 1급 꽃피우기 (Python 파이썬) (0) | 2024.07.11 |