프로그래머스
프로그래머스(기능개발)풀이 C++
Shin_jisoo
2020. 11. 2. 11:45
728x90
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
1) 주석 없는 version
#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 dayCount=0;
while(progresses[i]<100)
{
progresses[i]+=speeds[i];
dayCount++;
}
q.push(dayCount);
}
int cnt=1;
int curr=q.front();
q.pop();
while(!q.empty()){
if(q.front()<=curr)
{
q.pop();
cnt++;
}
else{
answer.push_back(cnt);
cnt=1;
curr=q.front();
q.pop();
}
}
answer.push_back(cnt);
return answer;
}
2) 주석 있는 version
#include <string>
#include <vector>
#include <queue> // queue 추가
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
queue<int> q; // queue를 앞으로 q로 사용
for(int i=0;i<progresses.size();i++) //progresses.size() 까지 i를 1씩 증가
{
int dayCount=0; // 한 작업이 완료될 때까지의 날짜를 저장할 변수 선언
while(progresses[i]<100) // 100이 될때까지 반복
{
progresses[i]+=speeds[i]; // 하루에 speeds 만큼 증가하므로 작업 진도에 작업 속도 더해줌
dayCount++; // 날짜 하루 증가
}
q.push(dayCount); // 한 작업이 완료될 때까지의 날짜를 q에 넣어주기
}
int cnt=1; // 배포될 작업 수 저장할 변수 선언
int curr=q.front(); // queue의 첫번째 작업을 curr 변수에 저장
q.pop(); // curr 뽑아내기
while(!q.empty()){ // queue가 비어있지 않을 때까지
if(q.front()<=curr) // queue의 첫번째 작업이 curr 보다 작을 경우
{
q.pop(); // 작업을 뽑아내면서
cnt++; // 배포할 작업 수 1 증가
}
else{ // queue의 첫번째 작업이 curr 보다 작지 않은 경우
answer.push_back(cnt); // vector 제일 뒤에 cnt값 넣기
cnt=1; // 배포할 작업의 수는 1
curr=q.front(); // 첫번째 작업은 curr
q.pop(); // curr 뽑아내기
}
}
answer.push_back(cnt); // vector 제일 뒤에 cnt값 넣기
return answer;
}