go.od_planter
[python] 프로그래머스 스택/큐 level2 - 프로세스 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드.
def solution(priorities, location):
answer = [-1]*len(priorities)
cnt = 1
len_ = len(priorities)
ind = 0
while answer[location] == -1:
if priorities[ind] == max(priorities):
answer[ind] = cnt
cnt += 1
priorities[ind] = -1
ind += 1
ind %= len_
return answer[location]
사실 이코드는 내가 짠거고,
시간복잡도가 O(n^2)으로 상당히 비효율 적이다.
스택/큐 문제인 만큼 해당 묘듈을 사용해서 문제를 풀어보자.
from collections import deque
def solution(priorities, location):
queue = deque([(priority, idx) for idx, priority in enumerate(priorities)])
process_cnt = 0
while queue:
current = queue.popleft()
if any(current[0] < item[0] for item in queue):
queue.append(current)
else :
process_cnt += 1
if current[1] == location:
return process_cnt
return process_cnt
이 방법은 deque를 사용함으로
시간복잡도를 O(n)으로 줄여줘서 훨씬 효율적인 코드가 된다.
728x90
반응형
'코딩테스트 > Python' 카테고리의 다른 글
| [python] 프로그래머스 lv3. heap - 디스크 컨트롤러 (0) | 2024.09.26 |
|---|---|
| [python] 프로그래머스 Heap(힙) - 더 맵게 / heapq와 deque의 차이점 (0) | 2024.09.26 |
| [python] 프로그래머스 스택/큐 level2 - 올바른 괄호 (0) | 2024.09.23 |
| [python] 프로그래머스 스택/큐 (0) | 2024.09.22 |
| [python] 프로그래머스 Hash level2 - 의상 (0) | 2024.09.22 |