hwooo
프로그래머스 (C/C++) 42536 : 기능개발 본문
https://school.programmers.co.kr/learn/courses/30/lessons/42586#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
풀이
각 프로세스의 기능 개발이 끝나는 날짜를 벡터에 순서대로 저장, 인덱스가 프로세스의 넘버가 되게 했다.해당 벡터를 앞에서부터 순회하며 현재 프로세스의 개발을 마친 시점에서 그 전에 개발을 마친 프로세스의 개수를 세면 해당 숫자가 한 번 배포될 때의 프로세스 수가 된다.이를 프로세스 수만큼 반복한다.이 때, 첫 번째 프로세스를 기준점으로 삼아 전체 프로세스 개수가 1개일 경우는 예외처리를 해 주었다.코드
#include <string>
#include <vector>
using namespace std;
#define MAXDAY 1000
typedef pair<int,int> pp;
vector<int> solution(vector<int> progresses, vector<int> speeds) {
vector<int> answer;
vector<int> Days;
// 입력이 1개 이하일 때 입력 받은 프로세스 개수 반환
if (progresses.size() < 2) {
answer.push_back(progresses.size());
return answer;
}
// 각 작업이 끝나는 날짜를 벡터에 저장, 인덱스 = 프로세스 순서
for (int i = 0; i < progresses.size(); i++) {
int endDay = (100 - progresses[i]);
if (endDay % speeds[i])
endDay = endDay / speeds[i] + 1;
else
endDay /= speeds[i];
Days.push_back(endDay);
}
int proCnt = 1, open = Days[0], i = 1;
while (i < Days.size()) {
// 이전 프로세스가 배포되는 날짜 이전에 구현이 끝난 기능들의 개수 세기
while (i < Days.size() && Days[i] <= open){
proCnt++;
Days[i] = MAXDAY;
i++;
}
// 한 번에 배포되는 프로세스 수
answer.push_back(proCnt);
// 마지막 배포 날짜 갱신
open = Days[i];
proCnt = 0;
}
return answer;
}
'Study > Algorithm' 카테고리의 다른 글
LeetCode (C/C++) : 1700. Number of Students Unable to Eat Lunch (0) | 2024.04.08 |
---|---|
LeetCode (C/C++) 678. Valid Parenthesis String (0) | 2024.04.07 |
LeetCode (C/C++) 3. Longest Substring Repeating Characters (0) | 2024.04.06 |
프로그래머스 (C/C++) 62048 : 멀쩡한 사각형 (0) | 2024.04.03 |
프로그래머스 (C/C++) 250136 : [PCCP 기출문제] 2번 / 석유 시추 (0) | 2024.04.03 |