-
[프로그래머스] > 스택/큐 > 기능개발 [C++]알고리즘 2019. 11. 12. 23:02
문제 링크 https://programmers.co.kr/learn/courses/30/lessons/42586?language=cpp
#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