문제 설명
int형 배열 작업 목록 진행율(progresses)과
위 배열과 같은 길이(Length)의 작업 목록 속도(speeds)가 주어지고,
같은 날 몇 개의 작업이 완료되는지를 반환하는 문제입니다.
문제 풀이
앞 작업부터 진행율을 확인해서 완료 카운트를 올리기 때문에
최근 진행율을 확인한 index를 담은 변수(idx)를 사용해서 앞에서부터 순차적으로 확인합니다.
배열은 동적으로 추가가 되지 않기 때문에 List를 사용해서 추가하고 마지막에
List를 Array형식으로 변환해서 반환하면 됩니다.
제출 코드
using System;
using System.Collections;
using System.Collections.Generic;
public class Solution
{
public int[] solution(int[] progresses, int[] speeds)
{
List<int> answer = new List<int>();
int idx = 0;
while (true)
{
int count = 0;
// 1
for (int i = 0; i < progresses.Length; i++)
{
progresses[i] += speeds[i];
}
// 2
for (int i = idx; i < progresses.Length; i++)
{
// 2-1
if (progresses[i] >= 100)
{
count++;
}
// 2-2
else
{
idx = i;
break;
}
}
// 3
if (count > 0)
{
answer.Add(count);
}
// 4
if (progresses[idx] >= 100)
{
break;
}
}
return answer.ToArray();
}
}