Stack/Coding test
[C++ / Lv2] 기능개발
Seo_re:
2022. 2. 15. 09:30
반응형
풀이 코드
#include <string>
#include <vector>
using namespace std;
#define COMPLETE 100
vector<int> GetAnswer(const vector<int>&, const vector<int>&);
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer = GetAnswer(progresses, speeds);
return answer;
}
vector<int> GetAnswer(const vector<int>& progresses, const vector<int>& speeds)
{
vector<int> result;
for(int i = 0; i < progresses.size();)
{
int date = (COMPLETE - 1 - progresses[i]) / speeds[i] + 1;
int releaseCount = 0;
for(int j = i; j < progresses.size(); j++)
{
if(progresses[j] + speeds[j] * date >= COMPLETE)
{
releaseCount++;
}
else
{
break;
}
}
result.push_back(releaseCount);
i += releaseCount;
}
return result;
}
- 카테고리가 스택/큐로 분류되어있어서 큐를 사용할까 했는데, 이걸 굳이 큐까지 사용해야하나 싶어서 결국 결과 값을 카운팅해서 구했다.
기타
- 다른사람 풀이를 보니 반복문 하나만 사용해서 풀은 코드를 보게되었다.
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;
}
- 처음에 이런식으로 작성하려고 생각했다가, answer에 값이 없을 때와 이미 들어간 값을 증감시키는 부분에 막혀서 카운팅을 따로 했었는데 vector.back()에 증감연산자 사용하는 방법이 있었다.
반응형