알고리즘 (JAVA)/프로그래머스 알고리즘
[코테준비 - python] 프린터 level2 - 개발자배찌
개발자 배찌
2023. 1. 5. 16:41
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/42587?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr


딱 봐도 큐 문제다.
문법력이 부족한 나는 heap이나 queue를 활용하지 못하고 리스트 튜플로 정의해서 풀었다..
풀릴듯 말듯.. 꽤 시간을 잡아먹었던 녀석
내 성공한 문제풀이
def solution(priorities, location):
answer = 0
temp = [(i,p) for i,p in enumerate(priorities)]
queue=[]
for i in priorities :
queue.append(i)
queue.sort(reverse=True)
while len(queue) != 0 :
for i in range(0,len(priorities)) :
if queue[0] == temp[i][1]:
answer+=1
queue.pop(0)
if temp[i][0] == location :
return answer
return answer
다른사람 문제풀이1
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): # cur[1]가 가장 큰수가 아닐 경우
queue.append(cur)
else: # cur[1]가 가장 큰수일 경우
answer += 1
if cur[0] == location:
return answer
다른사람 문제풀이2 - deque 이용
def solution(priorities, location):
answer = 0
from collections import deque
d = deque([(v,i) for i,v in enumerate(priorities)])
while len(d):
item = d.popleft()
if d and max(d)[0] > item[0]:
d.append(item)
else:
answer += 1
if item[1] == location:
break
return answer