문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
✍🏻코드
from collections import deque
def solution(priorities, location):
q=[(i,p) for i,p in enumerate(priorities)]
cnt = 0
while True:
tmp = q.pop(0)
if any(tmp[1] < x[1] for x in q):
q.append(tmp)
else:
cnt += 1
if location == tmp[0]:
break
return cnt
💡풀이
- location의 위치를 조정해서 푸는 방법으로 처음에 작성했으나, 계속 시간 초과가 발생해서 풀이를 보게 되었다.
- priorities 배열을 enumerate로 인덱스와 같이 큐에 저장해두고, tmp의 우선순위가 큐에 있는 어떤 수보다 작으면 다시 큐에 넣는다
- any()는 괄호 안의 조건식이 하나라도 만족하면 True를 반환한다. 즉 or이라고 생각하면 된다.
- 그리고 만약 모든 수보다 tmp의 우선순위가 크면, 같이 저장해둔 인덱스를 location과 비교해서 같으면 cnt를 반환하면 된다.
'👨🏻💻알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] Lv2. 타겟 넘버 (0) | 2023.01.22 |
---|---|
[프로그래머스] Lv2. 귤 고르기 (0) | 2023.01.22 |
[프로그래머스] Lv2. 뉴스 클러스터링 (0) | 2023.01.22 |
[프로그래머스] Lv2. n^2 배열 자르기 (0) | 2023.01.22 |
[프로그래머스-카카오] Lv2. 튜플 (0) | 2023.01.22 |