박기완 코딩교육/코딩테스트 대비
프로그래머스 기능개발 문제
hackee
2020. 10. 14. 23:58
오늘은 프로그래머스 기능개발 문제를 풀었습니다.
문제 이해만 된다면, 정말 쉽게 해결가능한 문제였습니다.
programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 ��
programmers.co.kr
문제풀이 접근과정은
1. 작업당 필요 시간을 계산하고,
2. 누적된 시간보다 필요시간이 같거나 작다면, 이번 배포할 갯수에 추가
3. 누적된 시간보다 필요시간이 크다면, 배포할 갯수를 결과벡터에 담고, 누적된 시간 추가,
배포할 갯수 0으로 초기화후 한개 추가.
식으로 구현했습니다.
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
//경과일
int pastDay = 0;
//매번 배포시 몇개 기능 배포되는지
int nowCommit = 0;
for(int i=0;i<progresses.size();i++){
//배포하는데 필요한 날짜 계산. 안나눠떨어지면 1일 추가
int needDay =(100-(progresses[i]))/speeds[i] + ((100-progresses[i])%speeds[i]>0?1:0);
if(i==0){
pastDay = needDay;
//배포할꺼에 한개추가
nowCommit++;
}
else{
if(pastDay >= needDay){
//배포할꺼에 추가됨
nowCommit++;
continue;
}
else{
//배포하고
answer.push_back(nowCommit);
nowCommit=0;
//남은시간만큼 추가
pastDay += (needDay-pastDay);
//다음번 배포할 대상에 한개 추가
nowCommit++;
}
}
}
answer.push_back(nowCommit);
return answer;
}
int main(){
while(1){
int n;
printf("작업 갯수 :");
scanf("%d",&n);
vector<int> progresses,speeds;
printf("작업 진도 :");
for(int i=0;i<n;i++){
int t;
scanf("%d",&t);
progresses.push_back(t);
}
printf("작업 속도 :");
for(int i=0;i<n;i++){
int t;
scanf("%d",&t);
speeds.push_back(t);
}
vector<int> res = solution(progresses,speeds);
printf("결과\n");
for(int i=0;i<res.size();i++){
printf("%d ",res[i]);
}
printf("\n");
}
return 0;
}
게임개발을 희망하는 초등학생, 중학생, 고등학생들을 위한 c언어 책
이 글을 보고있다는건 게임개발에 관심있다는 거겠죠? 그렇다면 정말 잘보셨습니다. 읽기 쉽고, 단기간 내에 자기꺼화 할 수 있게 최대한 핵심만 담았습니다. 게임을 어떻게 만드는지 궁금해
blog.codingteacher.kr
초등, 중등, 고등 1:1 원격 c언어 교육문의
010 - 4537 - 7998
현재 대치동 학원에서 코딩강사로 활동중에 있습니다
영재고, 과학고 내신 /
초등, 중등, 고등 입문반, 초급, 중급, 정올반 /
앱, 게임 제작반 문의주세요!