◎ 문제
○ 출처
https://programmers.co.kr/learn/courses/30/lessons/42586
○ 문제 설명
프로그래머스 팀에서는 기능 개선 작업을 수행 중입니다. 각 기능은 진도가 100%일 때 서비스에 반영할 수 있습니다. 또, 각 기능의 개발속도는 모두 다르기 때문에 뒤에 있는 기능이 앞에 있는 기능보다 먼저 개발될 수 있고, 먼저 배포되어야 하는 순서대로 작업의 진도가 적힌 정수 배열 progresses와 각 작업의 개발 속도가 적힌 정수 배열 speeds가 주어질 때 각 배포마다 몇 개의 기능이 배포되는지를 return 하도록 solution 함수를 완성하세요. |
○ 제한 사항
|
○ 입출력 예
○ 입출력 예 설명
첫 번째 기능은 93% 완료되어 있고 하루에 1%씩 작업이 가능하므로 7일간 작업 후 배포가 가능합니다. 따라서 7일째에 2개의 기능, 9일째에 1개의 기능이 배포됩니다. |
○ 작성 예시 코드
using System;
public class Solution {
public int[] solution(int[] progresses, int[] speeds) {
int[] answer = new int[] {};
return answer;
}
}
◎ 나의 문제 풀이
public class Solution
{
public int[] solution(int[] progresses, int[] speeds)
{
List<int> answer = new List<int>();
// 각각의 매개변수 요소를 큐에 저장
Queue<int> process_queue = new Queue<int>(progresses);
Queue<int> speeds_queue = new Queue<int>(speeds);
// 배포되는 기능을 카운트하는 변수
int complete_count = 0;
// 프로세스 큐에 남아있는 요소가 없을 때 까지 반복
while (process_queue.Count > 0)
{
// 기능과 작업진도를 계산하는 작업을 진행
for(int i = 0; i < process_queue.Count; ++i)
{
int temp_process = process_queue.Dequeue();
temp_process += speeds_queue.ElementAt(i);
process_queue.Enqueue(temp_process);
}
// 작업 진도가 100%를 달성한 작업 선별
if(process_queue.Count > 0)
{
while (process_queue.Peek() >= 100)
{
process_queue.Dequeue();
complete_count++;
speeds_queue.Dequeue();
if (process_queue.Count == 0) break;
}
}
// 선별된 작업의 양을 answer에 추가
if(complete_count > 0)
{
answer.Add(complete_count);
complete_count = 0;
}
}
return answer.ToArray();
}
}
'프로그래밍 문제 풀이 > C#' 카테고리의 다른 글
[프로그래밍 문제 풀이] 프로그래머스 - 다리를 지나는 트럭 (C#) (0) | 2020.08.12 |
---|---|
[프로그래밍 문제 풀이] 프로그래머스 - 주식가격 (C#) (0) | 2020.08.11 |
[프로그래밍 문제 풀이] 프로그래머스 - JadenCase 문자열 만들기 (C#) (0) | 2020.07.22 |
[프로그래밍 문제 풀이] 프로그래머스 - 최댓값과 최솟값 (C#) (0) | 2020.07.22 |
[프로그래밍 문제 풀이] 프로그래머스 - 올바른 괄호 (C#) (0) | 2020.07.21 |