[アルゴリズム]プログラマ機能の開発
1.問題分析
2.回答プロセス(挿入)
3.トラブルシューティング
4.コード
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
bool iscutted = false;
int remain = 0;
int multiple = 0;
int end_progresses = 0;
vector<int> answer;
for(int i = 0; i < progresses.size();)
{
end_progresses = 1;
iscutted = false;
remain = 100 - progresses[i];
multiple = (remain % speeds[i] == 0) ? remain / speeds[i] : remain / speeds[i] + 1;
for(int j = i+1; j < progresses.size(); j++)
{
progresses[j] += speeds[j] * multiple;
if(!iscutted)
{
if(progresses[j] >= 100)
end_progresses++;
else
{
i = j;
answer.push_back(end_progresses);
iscutted = true;
}
}
}
if(!iscutted)
{
i = 101;
answer.push_back(end_progresses);
}
}
return answer;
}
5.学習の達人のコード
#include <string>
#include <vector>
#include <iostream>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int day;
int max_day = 0;
for (int i = 0; i < progresses.size(); ++i)
{
day = (99 - progresses[i]) / speeds[i] + 1;
if (answer.empty() || max_day < day)
answer.push_back(1);
else
++answer.back();
if (max_day < day)
max_day = day;
}
return answer;
}
Reference
この問題について([アルゴリズム]プログラマ機能の開発), 我々は、より多くの情報をここで見つけました https://velog.io/@fortice/알고리즘-프로그래머스기능개발テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol