728x90
반응형
해당 문제는 progresses에 현재 진행률, speeds에 각 기능별 하루 개발 속도를 이용해 모든 progresses가 언제 완료되는지 구하는 문제이다.
이 문제의 핵심은 이미 기능이 완료가 되어도 이전 기능이 완료가 되지 않으면 이전 기능이 완료할때까지 대기했다가 같이 배포된다는 것이다.
#include <string>
#include <vector>
#include <cmath>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer; // 배포되는 기능의 개수를 저장할 벡터
vector<int> day; // 각 기능의 완료 일수를 저장할 벡터
// 각 기능의 완료까지 걸리는 일수를 계산합니다.
for(int i = 0; i < progresses.size(); i++)
{
// 완료 일수 계산: (100 - 현재 진도) / 개발 속도
day.push_back(ceil((100.0 - progresses[i]) / speeds[i])); // 소수점 올림 처리
}
int time = -1; // 이전 기능의 완료 일수를 저장하기 위한 변수
// 각 기능의 완료 일수를 순회합니다.
for(int i : day)
{
// 현재 기능의 완료 일수가 이전 기능보다 크면 새로운 배포 시작
if(time < i)
{
time = i; // 현재 기능의 완료 일수를 저장
answer.push_back(1); // 새로운 배포 그룹을 시작하므로 1 추가
}
else
{
// 현재 기능이 이전 기능과 함께 배포될 경우
int n = answer.back(); // 현재 그룹의 기능 개수를 가져옵니다.
n++; // 기능 개수를 증가
answer.pop_back(); // 이전 그룹 개수 제거
answer.push_back(n); // 증가된 개수를 다시 추가
}
}
return answer; // 최종 결과 반환
}
728x90
반응형
'프로그래밍 > 코딩테스트' 카테고리의 다른 글
코딩테스트 : H-Index (0) | 2025.04.16 |
---|---|
코딩테스트 : 의상 (0) | 2025.04.16 |
코딩테스트 : 전화번호 목록 (2) | 2025.04.16 |
코딩테스트 : 프로세스 (0) | 2025.04.16 |
코딩테스트 : 롤케이크 자르기 (0) | 2025.04.16 |