-
[프로그래머스] > 스택/큐 > 기능개발 [C++]알고리즘 2019. 11. 12. 23:02
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42586?language=cpp
코딩테스트 연습 - 기능개발 | 프로그래머스
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다. 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇
programmers.co.kr
#include <string> #include <vector> #include <queue> using namespace std; vector<int> solution(vector<int> progresses, vector<int> speeds) { vector<int> answer; int n; queue<int> q; int d[100][2]; // 작업일자, 기능개수 int l = -1; for (int i = 0; i < progresses.size(); ++i) { if((100 - progresses.at(i)) % speeds.at(i)==0) n = (100 - progresses.at(i)) / speeds.at(i); else n = (100 - progresses.at(i)) / speeds.at(i)+1; if (q.empty()) { q.push(n); } else { if (q.back() > n) // 전의 기능출시기간보다 작으면 현재기능도 전의 것과 같이 나온다 q.push(q.back()); else q.push(n); } } for (int i = 0; i < progresses.size(); i++) { // n 날짜에 m개의 기능인지 설정 if (q.front() == d[l][0]) { d[l][1]++; } else { ++l; d[l][0] = q.front(); d[l][1] = 1; } q.pop(); } for (int i = 0; i < l+1; ++i) answer.push_back(d[i][1]); return answer; }
전의 기능이 나온후에 출시해야 하기때문에 전의 기능의 기간이 현재 기능의 기간보다 크다면 현재기능의 기간을 전의 기능의 기간으로 바꾸어서 계산했습니다.
'알고리즘' 카테고리의 다른 글
[프로그래머스]>완전탐색>모의고사 (0) 2020.06.15 [프로그래머스] > DFS/BFS > 타겟넘버 [C++] (0) 2020.05.07 백준 14916 거스름돈 [C++] - 동적 계획법 (0) 2019.05.28 백준 11050 이항 계수 1 [C++] - 동적 계획법 (0) 2019.05.27 Kruskal 알고리즘 구현 과제 (0) 2019.05.14