Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 문자열 압축
- MySQL
- SWEA
- 3344
- 단어 수학
- AI Hub
- 백준
- mysqld.sock
- 수 만들기
- 3273
- 자료구조 목차
- 탄막 이동
- 알고리즘 목차
- c#
- 2020 KAKAO BLIND RECRUITMENT
- 원형
- 탄막
- 18249
- 토글 그룹
- 걷는건귀찮아
- 마우스 따라다니기
- 회의실 배정
- 강의실2
- 알고리즘
- 탄막 스킬 범위
- 유니티
- 우분투
- 영상 프레임 추출
- 그리디알고리즘
- 윈도우
Archives
- Today
- Total
와이유스토리
[DFS+우선순위큐] 프로그래머스 상담원 인원 C++ 본문
https://school.programmers.co.kr/learn/courses/30/lessons/214288
자연수의 분할 P(n,k) <= P(20,5) = P(15,1)+...+P(15,5) = 1+7+19+27+30 <= 100
DFS O(300*100*5!) = O(3,600,000)
우선순위큐 O(300log300) < O(3,000)
#include <string>
#include <vector>
#include <queue>
using namespace std;
int K, N, answer;
vector<vector<int>> Reqs;
void simulation(vector<int> v) {
priority_queue<int, vector<int>, greater<int>> pq[K]; // 오름차순
for(int i=0; i<K; i++) {
for(int j=0; j<v[i]; j++) pq[i].push(0);
}
int delay = 0;
for(auto req : Reqs) {
int type = req[2] - 1; // 상담 유형
int num = pq[type].top();
pq[type].pop();
if (req[0] >= num) pq[type].push(req[0] + req[1]); // 요청 시간 <= 멘토 상담 끝 시간 : 대기X
if (req[0] < num) { // 요청 시간 < 멘토 상담 끝 시간: 대기O, 먼저 상담 요청한 참가자 우선
delay += (num - req[0]);
pq[type].push(num + req[1]);
}
}
answer = min(delay, answer);
}
void partition(vector<int> v, int idx, int left) { // K개의 합이 N인 자연수의 분할(순열)
if ((idx > K) || (left < 0)) return;
if ((idx == K) && (left == 0)) {
simulation(v);
return;
}
for(int i=1; i<=left; i++) {
v[idx] = i;
partition(v, idx+1, left-i);
}
}
int solution(int k, int n, vector<vector<int>> reqs) {
answer = 1e9;
K = k; N = n;
Reqs = reqs;
partition(vector<int>(n+1,0), 0, n);
return answer;
}
'코딩테스트 > 그래프|트리' 카테고리의 다른 글
[DFS] 백준 15686 치킨집 배달 C++ (0) | 2023.09.14 |
---|---|
[위상정렬(BFS+DP)] (CHECK) 백준 1005 ACM Craft C++ (0) | 2023.08.31 |
[BFS+DP] 프로그래머스 리틀 프렌즈 사천성 C++ (1) | 2023.04.15 |
[DFS] 프로그래머스 N으로 표현 C++ (0) | 2023.04.14 |
[DFS] 백준 테트로미노 C++ (0) | 2023.04.12 |
Comments