저번 스터디 이후로, 문제량이 너무 많아져서
깃허브에만 정리해서 업로드하고 있었습니다. (유용한 블로그를 위해 )
지금도 파이썬으로 진행하는 코테 준비 스터디장이 되어 매주 2회 스터디를 진행하고 있는데요,
스터디원이 내주신 문제 중에 전에 한 번 풀었던 문제가 있었습니다.
이번에 새로 풀면서, 시간이나 메모리 비교도 하고 코드도 의문점이 있어 리뷰해보겠습니다.
from collections import deque
def solution(priorities, location):
answer = 0
printlist = deque((n,p) for n,p in enumerate(priorities))
maxpr = max(printlist, key = lambda x:x[1])
while printlist:
tmp = printlist.popleft()
if tmp[1] < maxpr[1]:
printlist.append(tmp)
else :
answer += 1
if tmp[0] == location:
break
maxpr = max(printlist, key = lambda x:x[1])
return answer
while문
안의 if문 조건
에서 제가 왜인지 모르게 q를 넣었는데,q and
이조건을 빼주면 2,5,18번에서 런타임 에러가 납니다(아마 느려서 그런듯)제가풀고 제가 이해가안되는게 이상한데....생각이....안나네요...^_ㅠ..
def solution(priorities, location):
from collections import deque
q = deque([(p,i) for i,p in enumerate(priorities)])
answer = 0
while q:
np = q.popleft()
if q and max(q)[0] > np[0]:
q.append(np)
else :
answer += 1
if np[1] == location:
break
return answer
from collections import deque
def solution(priorities, location):
answer = 0
q = deque((n,p) for n,p in enumerate(priorities))
while q:
tmp = q.popleft()
if tmp[1] < max(q, key=lambda x:x[1])[1]:
q.append(tmp)
else :
answer += 1
if tmp[0] == location:
break
return answer