Algorithm/프로그래머스

[프로그래머스] 프로세스 (Python)

에릭 Kim 2023. 5. 25. 15:33
반응형

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

 

반응형