반응형
문제 링크
https://school.programmers.co.kr/learn/courses/30/lessons/42586
문제
코드 및 풀이
/*
기능 개발
먼저 배포되어야하는 순서대로 작업의 진도가 적힌 progresses
각 작업의 개발속도가 적힌 speeds
각 배포마다 몇개의 기능이 배포되는지를 return
결국 먼저 끝냈더라도 앞에의 progresses가 끝나지 않으면 기다림
*/
간단하게 전꺼가 끝나지 않았다면 기다리고 끝났다면 연속적으로 끝난 작업에 대해서 progress++을 해서 진행을 하였습니다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int done = 0; //어디까지 끝냈는지에 대한 index로 설정
int progress = 0; //앞에 있는곳이 진행될때마다 뒤에 것에 대해 진행이 된것이 연속적인것을 저장
while(1){
for(int i = 0; i < speeds.size();i++){
progresses[i] += speeds[i];
}
if(progresses[done] >= 100){
while(progresses[done] >= 100 && done < progresses.size()){
done++;
progress++;
}
answer.push_back(progress);
progress = 0; // 다시 0으로 초기화 해줌으러써 다른 작업이 완료될때 ++을 함.
}
if(done >= progresses.size())
break;
}
return answer;
}
제 코드를 보며 다른사람의 풀이가 궁금해서 봤는데
다른 사람 풀이
#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;
}
반복문 하나로 끝내시는 모습을 보고 많이 현타가 온 느낌이 없지 않아 있다..
진짜 고수가 너무 많으신것 같습니다 ㅠ
반응형
'알고리즘 > c++ 프로그래머스' 카테고리의 다른 글
[프로그래머스 뉴스 클러스터링, 2018 카카오] c++ (풀이 및 코드) (0) | 2023.05.15 |
---|---|
[프로그래머스 프로세스] c++ (풀이, 코드) (0) | 2023.05.14 |
[프로그래머스, 카카오 코테] 튜플 c++ (풀이과정,코드) (0) | 2023.05.13 |
[프로그래머스] 의상 c++ (코드,풀이방법) (2) | 2023.05.13 |
[프로그래머스] n^2배열 자르기 c++ (코드,해결과정, 오류수정) (1) | 2023.05.12 |
댓글