[프로그래머스/c++] Level 2: 기능 개발
7861 단어 스택/큐Bruth ForceBruth Force
문제 링크 - https://programmers.co.kr/learn/courses/30/lessons/42586
🌱 풀이
- 나는 문제의 설명 그대로 일일이 구현하였다.
sum
: 완료된 기능 전체 갯수
cnt
: index번째 기능이 완료되었을때 함께 완료된 기능 갯수
index
: progresses 앞에서 부터 탐색할때의 index - 먼저 while을 true로 계속 돌린다. answer 벡터안에 있는 수의 합이 progresses의 사이즈와 같으면 모든 기능 개발을 완료한 것이므로, sum에 answer각 원소를 전부 더해놓고, sum==progresses 인순간 break를 해주었다.
- while안에서는 progresses의 원소들을 전부 돌아가며 각 해당하는 인덱스의 speeds를 더한다.
- 현재 보고있는 원소의 인덱스는 index라고 두었다
- 현재 기능이 완료되었으면(==100% 도달) 이후 기능들이 완료된것이 있는지 확인하고, 갯수를 갱신한다. 이때 만약 마지막 기능이 완료되었으면 더이상 볼것이 없으므로 현재까지 센 갯수를 push하고 break한다.
- 현재 기능이 완료되지 않았으면 index를 현재 보고있는 인덱스로 갱신하고, 현재까지 센 갯수를 push한후 break한다.
- 현재 기능이 완료되었으면(==100% 도달) 이후 기능들이 완료된것이 있는지 확인하고, 갯수를 갱신한다. 이때 만약 마지막 기능이 완료되었으면 더이상 볼것이 없으므로 현재까지 센 갯수를 push하고 break한다.
🌱 코드
- 내 코드
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
int index=0;
int cnt=0;
int sum=0;
while(true){
for(int i=0; i<progresses.size(); i++){
progresses[i]+=speeds[i];
}
cnt=0;
if(progresses[index]>=100){
for(int j=index; j<progresses.size(); j++){
if(progresses[j]>=100){
cnt++;
if(j==progresses.size()-1){
answer.push_back(cnt);
sum+=cnt;
break;
}
}else{
index=j;
answer.push_back(cnt);
sum+=cnt;
break;
}
}
}
if(sum==progresses.size()){
break;
}
}
return answer;
}
🌱 베스트 코드
Author And Source
이 문제에 관하여([프로그래머스/c++] Level 2: 기능 개발), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@somyeong0623/프로그래머스c-Level-2-기능-개발저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)