반응형
문제 링크 : https://programmers.co.kr/learn/courses/30/lessons/42586
코딩테스트 연습 - 기능개발
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는
programmers.co.kr
<코드>
#include <bits/stdc++.h>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> takes;//며칠이 걸리는지
for(int i=0;i<progresses.size(); i++){
takes.push_back(ceil((100-progresses[i])/float(speeds[i])));
}
int cnt = 0;
int tmp = takes[0];
for(int i=0;i<takes.size(); i++){
if(tmp >= takes[i]){
cnt++;
}
else{
answer.push_back(cnt);
cnt = 1;
tmp = takes[i];
}
}
answer.push_back(cnt);
return answer;
}
<풀이>
70을 30으로 나누는 경우를 생각해보자.
만약 둘 다 int형이라면 그냥 2가 나온다. 따라서 한 변수를 float으로 형변환 해준 뒤 올림해준다.
tmp 변수에 첫 번째 작업이 걸리는 일 수를 저장해두고 i번째 작업과 비교한다.
만약 첫 번째 작업이 끝날 때 i번째 작업도 끝나면 cnt++를 해주고, 아니라면 쌓인 cnt값을 answer에 push한 뒤
cnt를 다시 1로 설정한다.
처음 시작할 때에는 tmp를 takes[0]으로 초기화 하고 0번째 인덱스부터 비교하므로 cnt=0이었지만 지금은 1로 설정해야 한다.
이제 다시 tmp 변수에 i번째 작업이 며칠 걸리는지 넣어두고 진행한다.
비교가 끝나면 마지막으로 cnt를 push해준다.
반응형
'Programming Solve > 프로그래머스' 카테고리의 다른 글
프로그래머스 - 이상한 문자 만들기 / C++ (0) | 2021.07.07 |
---|---|
프로그래머스 - 문자열 내 p와 y의 개수 / C++ (0) | 2021.07.07 |
프로그래머스 - 2016년 / C++ (0) | 2021.04.16 |
프로그래머스 - 체육복 / C++ (0) | 2021.03.24 |
프로그래머스 - 신규 아이디 추천 / C++ (0) | 2021.03.18 |