https://programmers.co.kr/learn/courses/30/lessons/42586
정답 :
#include <string>
#include <vector>
using namespace std;
vector<int>stack;
vector<int>stackCount;
int Sum(int progresses,int speeds,int cnt){
progresses=progresses+speeds;
if(progresses<100){
cnt++;
return Sum(progresses,speeds,cnt);
}else{
return cnt;
}
}
vector<int> Count(vector<int> progresses,vector<int> speeds,int i){
//progresses[i]=progresses[i]+speeds[i];
for(int i=0;i<progresses.size();i++){
int cnt=1;
stack.push_back(Sum(progresses[i],speeds[i],cnt));
}
return stack;
}
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> answer1;
vector<int> answer2;
int ccn=1;
answer1 =Count(progresses,speeds,0);
int tmp=answer1[0];
int tmpccn=0;
for(int i=1;i<answer1.size();i++){
tmpccn++;
if(tmp >=answer1[i]){
ccn++;
}else if(tmp<answer1[i]){
answer.push_back(ccn);
ccn=1;
tmp=answer1[i];
}
if(answer1.size()-1==tmpccn){
answer.push_back(ccn);
}
}
// answer=answer1;
return answer;
}
200806
#include <string>
#include <vector>
#include <algorithm>
#include<iostream>
using namespace std;
struct Saves{
int progress;
int num;
int days;
};
bool cmp(const Saves &p1, const Saves &p2){
if(p1.num < p2.num){
return true;
}
else if(p1.num== p2.num){
return p1.num < p2.num;
}
else{
return false;
}
}
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> task;
vector<int> list;
vector<Saves >data;
static bool bCheck=false;
for(int i=0;i<progresses.size();i++){
Saves tmp;
tmp.progress=progresses[i];
tmp.num=i;
tmp.days=0;
data.push_back(tmp);
}
int count=data.size()-1;
while(1){
bCheck=true;
for(int i=0;i< data.size();i++){
if(data[i].progress<100){
data[i].progress+= speeds[i];
data[i].days+=1;
bCheck=false;
}
}
if(bCheck==true){
break;
}
}
sort(data.begin(),data.end(),cmp);
int countNum=1;
int dateMax=data[0].days;
for(int i=1;i<data.size();i++){
if(dateMax<data[i].days){
answer.push_back(countNum);
countNum=1;
dateMax=data[i].days;
}else if(dateMax>data[i].days){
countNum++;
}else if(dateMax==data[i].days){
countNum++;
}
}
answer.push_back(countNum);
return answer;
}
뭔가 지난번이 더 간단하게 푼것같다
훨씬 더 간단하게 푼듯
음 틀렸던점은 speed도 같이 pop 해줘야하는데
작업만 pop을 해줌
201003
#include <string>
#include <vector>
#include<iostream>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
while(progresses.size()>0){
for(int i=0;i<progresses.size();i++){ //작업 진행
progresses[i]+=speeds[i];
// cout<<progresses[i]<<",";
}
// cout<<endl;
int data=0;
for(int i=0;i<progresses.size();i++){ //나머지 한번씩 검사
if(progresses[i]>=100){ //무조건 맨처음 데이터만 검사 만약 첫번째가 100안넘엇으면 다른것들도 마찬가지
data++;
}
else if(progresses[i]<100){
i=progresses.size()+1;
}
}
for(int i=0;i<data;i++){
progresses.erase(progresses.begin());
speeds.erase(speeds.begin());
}
//cout<<endl;
if(data>0){
answer.push_back(data);
data=0;
}
}
return answer;
}
'알고리즘 공부' 카테고리의 다른 글
프로그래머스 level -2 코딩 연습-가장 큰 수 (0) | 2020.02.18 |
---|---|
프로그래머스 level2 연습 문제-전화번호 목록 (0) | 2020.02.17 |
프로그래머스 -level 2 코딩 연습 문제-탑 (0) | 2020.02.16 |
<알고리즘/c++>너비 우선 탐색 / Breadth First Search (BFS) (0) | 2019.10.17 |
<알고리즘/c++>깊이 우선 탐색 / Depth First Search(DFS) (0) | 2019.10.16 |