알고리즘/programmers

[Programmers] 상담원 인원

꾸준함. 2024. 5. 8. 19:52

문제 링크입니다: https://school.programmers.co.kr/learn/courses/30/lessons/214288

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 
reqs의 크기가 최대 300이고 상담원 배치 조합이 최대 15C5이기 때문에 브루트포스로 접근해도 되는 문제였습니다.
알고리즘은 다음과 같습니다.
1. 상담원을 배치할 수 있는 모든 조합을 구해줍니다.
2. 각각의 상담원 배치에 대해 기다린 시간의 합산을 구해줍니다.
2.1 자료구조는 시간을 기준으로 최소힙 배열을 선언하였고 각 유형의 상담원 인원수만큼 우선순위큐에 0을 넣어줬습니다.
2.2 우선순위 큐의 top()에 위치한 시간이 다음 참가자의 상담 시작 시간보다 앞서 있을 경우 대기 시간을 더해주고 우선순위 큐에는 해당 참가자가 상담을 마친 시간을 다시 넣는 형식으로 대기 시간의 합산을 구했습니다.
3. 2번에서 구한 기다린 시간의 합산 중 최솟값을 반환합니다.
 

 
개발환경: Programmers IDE  
 
지적, 조언, 질문 환영합니다! 질문 남겨주세요~

반응형