https://school.programmers.co.kr/learn/courses/30/lessons/42587
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
소스코드
풀이
★ FIFO 구조인 큐를 이용하여 푸는 문제입니다 ! 입력 받은 priorities 리스트를 (인덱스, 값) 형태로 큐 자료구조를 만들어 줍니다. 이 때 enumerate()를 사용해주시면 됩니다 !
★ dq가 비어있지 않는 동안 반복문을 도는데, 먼저 큐에서 하나의 값을 pop해줍니다. 그 값을 기준으로 조건문들을 작성하는데, 이때 any 함수가 사용됩니다.
- any(): 조건 중 하나라도 참이 있으면 true 리턴
- all(): 조건 중 모든 값이 참이 되어야지 true 리턴
저희는 pop한 값인 cur이 큐에 남아있는 모든 자료보다 클 때 진짜로 그 값을 pop할 수 있기 때문에 any()를 사용하여 하나라도 크지 않을 경우, 다시 큐에 append 해줍니다. 이러한 구조로 반복문을 진행합니다.
★ 반복문을 진행하면서 pop된 값들은 큐 중 가장 우선순위가 큰 값입니다. 저희는 location과 같은 인덱스 값을 가지고 있는 cur이 몇 번째로 출력되는지 확인해줘야 합니다. 그렇기에 while문을 돌면서 큐에서 pop이 될 때마다 answer를 하나씩 올려주고, 출력된 값의 인덱스 번호가 location과 같으면 answer를 return 해줘서 while문을 종료합니다 !
★ enumerate 참고 자료
https://www.daleseo.com/python-enumerate/
파이썬의 enumerate() 내장 함수로 for 루프 돌리기
Engineering Blog by Dale Seo
www.daleseo.com
'Algorithm > 프로그래머스' 카테고리의 다른 글
[프로그래머스] H-index (Python) (0) | 2023.05.25 |
---|---|
[프로그래머스] 가장 큰 수 (Python) (0) | 2023.05.25 |
[프로그래머스] 체육복 (Python) (0) | 2023.05.24 |
[프로그래머스] K번째 수 (Python) (0) | 2023.05.23 |
[프로그래머스] 올바른 괄호 (Python) (0) | 2023.05.22 |