반응형
Level 2 스택/큐
문제 : https://programmers.co.kr/learn/courses/30/lessons/42587
첫번째 풀이
from collections import deque
def solution(priorities, location):
answer = 0
q = deque(priorities)
idx = deque([i for i in range(len(q))])
cnt = 1
while q:
M = max(q)
pri = q.popleft()
i = idx.popleft()
if pri != M:
q.append(pri)
idx.append(i)
else:
if i == location:
answer = cnt
break
cnt += 1
answer = cnt
return answer
매 q 마다 최댓값을 찾아 큐의 맨 앞이 가장 큰 값이 아니면 큐 맨 뒤로 넣어주고 가장 큰 값이면 내가 찾는 위치가 맞는지 확인해서 반복 횟수를 구했습니다.
좋아요를 가장 많이 받은 코드
def solution(priorities, location):
queue = [(i,p) for i,p in enumerate(priorities)]
answer = 0
while True:
cur = queue.pop(0)
if any(cur[1] < q[1] for q in queue):
queue.append(cur)
else:
answer += 1
if cur[0] == location:
return answer
제 코드와 차이점은 인덱스와 우선순위를 묶어 계산하였으며
any를 이용해서 큐의 맨 앞의 값 보다 큰 값이 하나라도 있다면
True 를 반환하여 뒤에 넣습니다.
없다면 answer 를 하나 증가시켜 인덱스가 찾는 위치인지 확인을 합니다.
any : 하나라도 True인게 있으면 True
any([False, False, False]) #False
any([False, True, False]) #True
불 대수의 OR, || 같은 느낌입니다.
all : 모두 True여야 True 반환
all([False, True, False]) #False
all([True, True, True]) #True
불 대수의 AND, & 같은 느낌입니다.
반응형
'ProblemSolving > Stack, Queue' 카테고리의 다른 글
백준 9935 문자열 폭발 (파이썬) (0) | 2022.06.01 |
---|---|
백준 1541 잃어버린 괄호 (파이썬) (0) | 2022.05.24 |
프로그래머스 주식 가격 (파이썬) (0) | 2022.05.05 |
프로그래머스 다리를 지나는 트럭 (파이썬) (0) | 2022.05.05 |
프로그래머스 기능 개발 (파이썬) (0) | 2022.05.05 |