[Python] 프로그래머스 / 스택/큐 / 프로세스 / any()
2024. 3. 6. 16:52ㆍCoding Test/Python
https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
def solution(priorities, location):
answer = 0
queue = [(i, j) for i, j in enumerate(priorities)]
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
코드를 보고서도 나에겐 너무 이해하기 어려웠다

queue = [(i, j) for i, j in enumerate(priorities)]
이것을 통해 queue에 index와 값을함께 저장한 뒤
cur = queue.pop(0)
queue의 0번째 값을 return
if any(cur[1]<q[1] for q in queue):
queue.append(cur)
cur[1]과 q[1]을 비교한다.
예를 들면, cur = (0,2) 일 때 cur[1] = 2이므로 q[1]들 중에서(2,1,3,2) 어느 하나라도 크면 queue에 cur을 추가한다.
그 이유는 cur[1]보다 먼저 처리해야할 우선순위가 있기 때문에 맨뒤로(append) 보내는 것이다!
else:
answer+=1
만약다를 경우, anwer+=1
if cur[0]==location:
return answer
그런데 cur[0]이 location과 같다면, 즉, index가 location이 같다면 answer을 출력.
작을 경우, answer 값이 누적되어 그것이 우선순위의 index가 되기 때문이다.(....?)
ref :
[Level 2]프로그래머스 - 프로세스(Feat. any)
프로그래머스에 있는 코딩테스트 문제 중 level 2 프로세스 문제를 풀어봤습니다.(실패함..)
velog.io

'Coding Test > Python' 카테고리의 다른 글
| [Python] 프로그래머스 / 스택/큐 / 주식가격 / 리스트 숫자 비교 (0) | 2024.03.09 |
|---|---|
| [Python] 프로그래머스 / 스택/큐 / 다리를 지나는 트럭 (0) | 2024.03.09 |
| [Python] 프로그래머스 / 정렬 / 가장 큰 수 / 숫자형 리스트 단일 값으로 병합 (0) | 2024.03.06 |
| [Python] 프로그래머스 / 스택/큐 / 올바른 괄호 / pop() / stack (0) | 2024.03.05 |
| [Python] 프로그래머스 / 스택/큐 / 기능개발 / 리스트 순서대로 비교 (0) | 2024.03.05 |