728x90
programmers.co.kr/learn/courses/30/lessons/42586
큐를 사용해서 처리해야하는 문제다.
각 작업별 100% 도달할때 까지 경과되는 시간들을 전부 큐에 넣는다.
그리고 큐가 비어있게 될때 까지
수를 하나씩 빼면서 큐의 프론트 부분 이상의 값인 경우, 동시에 끝낼 수 있는 작업이므로
작업 처리 량을 나타내는 cnt 변수를 하나씩 늘리고
더이상 큐의 프론트 부분 보다 크거나 같은 값이 아니면 반복문을 종료하여, answer 에 cnt 를 추가해준다.
- c++
#include <iostream>
#include <vector>
#include <queue>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
queue<int> q;
int size = progresses.size();
for (int i = 0; i < size; ++i) {
int temp = progresses[i], cnt = 0;
while(1) {
cnt++;
temp += speeds[i];
if (temp >= 100) break;
}
q.push(cnt);
}
while(!q.empty()) {
int num = q.front(), cnt = 1;
q.pop();
while(1) {
if (num >= q.front() && !q.empty()) {
cnt++;
q.pop();
} else if (num < q.front() || q.empty())
break;
}
answer.push_back(cnt);
}
return answer;
}
|
cs |
728x90
'PS' 카테고리의 다른 글
프로그래머스 - 단체사진 찍기 (0) | 2020.12.07 |
---|---|
프로그래머스 - 다음 큰 숫자 (0) | 2020.12.07 |
프로그래머스 - 124 나라의 숫자 (0) | 2020.12.07 |
프로그래머스 - 피보나치 수 (0) | 2020.12.07 |
프로그래머스 - 최댓값과 최솟값 (0) | 2020.12.07 |