728x90
문제
코드
from collections import deque
def solution(priorities, location):
cnt = 0
priorities = deque(priorities)
prioritie1 = deque([0]*len(priorities))
prioritie1[location] = 1
while(1):
if(len(priorities) == 1):
cnt += 1
break
else:
num = priorities.popleft()
num1 = prioritie1.popleft()
if(num >= max(priorities)):
cnt += 1
if(num1 == 1):
break
else:
priorities.append(num)
prioritie1.append(num1)
return cnt
코드풀이
자료구조에 필요한 deque를 사용하였다.
프린터라는 문제는 priorities 라는 우선순위가 적혀있는 배열을 받고 location 으로 배열의 위치를 받아 몇 번째로 출력하는지 맞추는 문제이다.
나는 기본 배열이 있는 priorities 와 location 으로 지정받은 위치를 가지는 priorities1 을 선언했다.
만약 location 이 2 이고 priorities = [1,3,5,2,1] 이라면 priorities1 = [0, 0, 1, 0, 0] 가 된다.
그러면 location으로 선언받은 위치를 계속 알 수 있기 때문에 priorities와 함께 움직인다.
cnt 로 움직인 횟수를 삽입하며 반복문을 돌면서 priorities의 가장 앞에 있는 배열과 그 배열의 최대값을 비교한다.
가장 앞에 있는 배열이 나머지 배열의 최대값보다 크거나 같고 priorities1의 위치도 1이라면 원하는 위치이니 cnt를 증가시키고 반환한다.
300x250
'코딩코딩' 카테고리의 다른 글
[프로그래머스] level2 - 기능개발 : 파이썬(Python) 풀이 (0) | 2020.11.15 |
---|---|
[프로그래머스] level1 체육복 - 파이썬(Python) 풀이 (0) | 2020.09.25 |
[프로그래머스] level2 카펫 - 파이썬(Python) 풀이 (0) | 2020.09.13 |
[프로그래머스] level2 스킬 트리 (0) | 2020.09.09 |
[프로그래머스] level1 완주하지 못한 선수 (0) | 2020.09.02 |