Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 나나이트
- blueprint
- 재귀
- Widget
- 언리얼4
- UMG
- 코테
- Unity
- EffectiveC++
- 코테연습
- 유니티
- UE4
- c++
- ue4macro
- 코딩테스트
- dfs
- uproperty
- UnReal
- server
- Stimuli
- DP
- 문자열
- AIPerception
- 알고리즘
- HTTP
- 다이나믹프로그래밍
- 프로그래머스
- UE5
- 언리얼
- 동적계획법
Archives
- Today
- Total
공부 기록
[프로그래머스] level 2 - 기능 개발 (C++) 본문
문제 설명
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다.
또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 이때 뒤에 있는 기능은 앞에 있는 기능이 배포될 때 함께 배포됩니다.
먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요.
- 작업의 개수(progresses, speeds배열의 길이)는 100개 이하입니다.
- 작업 진도는 100 미만의 자연수입니다.
- 작업 속도는 100 이하의 자연수입니다.
- 배포는 하루에 한 번만 할 수 있으며, 하루의 끝에 이루어진다고 가정합니다. 예를 들어 진도율이 95%인 작업의 개발 속도가 하루에 4%라면 배포는 2일 뒤에 이루어집니다.
문제 풀이
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
// 먼저 끝내야 하는 기능 순으로 배포일까지 남은 일수를 구함
// 앞 반복에서 구한 일수보다 작거나 같으면 count++, 더 크면 answer에 저장하고 새로 ++
int relCount = 1;
int relDate = (99 - progresses[0]) / speeds[0] + 1;
for (int i=1; i<progresses.size(); i++){
int date = (99 - progresses[i]) / speeds[i] + 1;
if (relDate >= date) relCount++;
else {
answer.push_back(relCount);
relCount = 1;
relDate = date;
}
}
answer.push_back(relCount);
return answer;
}
'Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스] level 2 - 전화번호 목록 (C++) (4) | 2022.03.05 |
---|---|
[프로그래머스] level 1 - 완주하지 못한 선수 (C++) (2) | 2022.03.04 |
[프로그래머스] level 3 - N으로 표현 (C++) (0) | 2022.03.01 |
[프로그래머스] level 2 - 124 나라의 숫자 (C++) (0) | 2022.02.27 |
[프로그래머스] level 2 - 멀쩡한 사각형 (C++) (0) | 2022.02.23 |
Comments