이것도 알아야 하네?
[C++] Programmers 기능개발 풀이 (stack/queue) 본문
728x90
풀이
progresses에 speed를 더해서 하루하루 지난다고 생각하고 그 당일 날 새 100이 넘은 얘들까지 수를 세아려 answer에 넣어줍니다. 주의할 점은 지난 배포에 포함한 부분까지를 표시해주어서, 100이 넘는 일들 중 지난 배포까지 포함된 부분을 빼줘야지만 이번에 새로 100이 넘는 부분만 남는다는 것입니다. 저는 이렇게 풀었지만 많은 분들이 day = (99 - progresses[i]) / speeds[i] + 1; 로 해당 progesses가 100이 넘는 기간을 미리 구해서 문제를 풀었더라구요, 저도 객관적으로 보면 그 부분이 for문을 돌지 않고 빨리 구하는 방법이라고 생각합니다 :-)
전체 성공 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> flag(progresses.size(), 0);
int cur = 0;
while (1) {
int index = 0;
for (int i = 0; i < progresses.size(); i++) {
progresses[i] += speeds[i];
}
int i;
for (i = 0; i < progresses.size(); i++) {
if (progresses[i] < 100) break;
}
index = i - cur;
if (index != 0 ) {
answer.push_back(index);
cur = i;
}
if (cur == progresses.size()) {
break;
}
}
return answer;
}
728x90
'프로그래밍 > 알고리즘' 카테고리의 다른 글
[C++] 백준 14499번 주사위 굴리기 (삼성 SW 역량 테스트 기출 문제) (0) | 2021.11.12 |
---|---|
[C++] 백준 14500번 테트로미노 (삼성 SW 역량 테스트 기출 문제) (0) | 2021.11.12 |
[C++] Programmers 땅따먹기 풀이 (0) | 2021.11.10 |
[Python] 엘리스 코딩 도레미 파이썬 Vol.2 실력 확인 테스트 (2) | 2021.11.09 |
[Python] 엘리스 코딩 도레미 파이썬 Vol.I 실력 확인 테스트 (0) | 2021.11.09 |
Comments