풀이 과정
이 문제는 큐를 활용하는 문제이다.
각 기능들이 며칠째에 배포가 가능한지 큐에 넣는다.
그리고 만약 현재값보다 나중값이 더 작다면 같이 배포할 수 있기 때문에
반복문을 돌려 몇개까지 배포할 수 있는지 res를 카운트 해준다.
풀이1
#include <string>
#include <vector>
#include <queue>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
queue<int> q;
for(int i = 0; i < progresses.size(); i++){
int cnt = 0;
while(progresses[i] < 100){
progresses[i] += speeds[i];
cnt++;
}
q.push(cnt);
}
while(!q.empty()){
int now = q.front();
q.pop();
int res = 1;
while(!q.empty() && now >= q.front()){
res++;
q.pop();
}
answer.push_back(res);
}
return answer;
}
풀이2
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> v; // 걸리는 일수
for(int i = 0; i < progresses.size(); i++){
int day = 0;
int num = 100 - progresses[i];
if (num % speeds[i] != 0) day += 1;
day += num / speeds[i];
v.push_back(day);
}
int cnt = 1;
int num = v[0]; // 젤 마지막 값
for(int i = 1; i < v.size(); i++){
if (num < v[i]){
answer.push_back(cnt);
cnt = 1;
num = v[i];
} else {
cnt++;
}
}
answer.push_back(cnt);
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level2] 올바른 괄호 c++ (0) | 2022.10.21 |
---|---|
[프로그래머스][Level2] 땅따먹기 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] [3차]파일명 정렬 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 멀쩡한 사각형 c++ (0) | 2022.10.21 |
[프로그래머스][Level2] 거리두기 확인하기 c++ (0) | 2022.10.20 |