오답노트
프로그래머스 2단계 - 기능 개발 본문
https://programmers.co.kr/learn/courses/30/lessons/42586#
- 문제 파악
현재 각 기능별로 진행도를 나타내는 배열과 각 기능별 하루마다 진행할 수 있는 진행도 배열이 주어진다.
배포는 배열의 순서대로 되어야하며 앞에 요소가 개발되지 않았다면 (진행도가 100이 아니면) 뒤에 요소들은 배포할 수 없다. 같은 날에 진행도가 100된 기능이 여러 개라면 해당 기능들은 모두 배포할 수 있다. 이 때 배포될 때 마다 몇개가 배포될 수 있는지 배열로 출력하라.
- 정답
현재 진행도에서 100이 되기 위해 필요한 최소 일 수를 구한 뒤 큐에 넣어놓는다.
그 후 큐를 하나씩 꺼내보면서 그 뒤에있는 큐의 최소 일 수가 꺼낸 큐의 최소 일 수 보다 작거나 같으면 그 다음 큐도 확인 하는 방식으로 로직을 구성했다.
#include "bits/stdc++.h"
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++)
{
float mincnt = ((100 - (float)progresses[i]) / (float)speeds[i]);
int tmp = (int)ceil(mincnt);
q.push(tmp);
}
while(!q.empty())
{
int nCnt = 1;
int tmp = q.front();
q.pop();
while(!q.empty())
{
if(q.front() <= tmp)
{
tmp = max(tmp,q.front()) ;
nCnt++;
q.pop();
}
else
break;
}
answer.push_back(nCnt);
}
return answer;
}
'C,C++ > 코딩테스트' 카테고리의 다른 글
[정렬] BOJ 2750번 수 정렬하기 (0) | 2022.06.06 |
---|---|
프로그래머스 2단계 - 최댓값과 최솟값 (0) | 2022.06.05 |
프로그래머스 2단계 - 조이스틱 - 오답노트 (0) | 2022.06.05 |
프로그래머스 2단계 - 카카오프렌즈 컬러링북 (0) | 2022.06.04 |
프로그래머스 2단계 - 오픈채팅방 (0) | 2022.06.03 |