📌프로그래머스 42586
💡풀이
- 개발 완료에 걸리는 일자를 구한 정수 배열 int[] days를 만듦.
- 정수 배열을 Queue로 이식.
- 순서에 맞게 완료 시기마다 한 번에 배포될 수를 담을 List<int>를 선언.
- Queue에 담겨있는 int가 있는동안 while문으로 먼저 배포가 되어야 할 기능의 개발일을 꺼내고(Dequeue) count + 1
- 이중 while문으로 다음 기능의 개발일을 확인 후 아직 개발완료가 아니면 break, 개발완료 되었으면 현재 기능과 같이 배포가 가능하므로 Dequeue 및 count + 1
- while문 한 번 돌 때 마다 count를 List에 Add
public int[] 기능개발(int[] progresses, int[] speeds)
{
int[] days = new int[progresses.Length];
for(int i = 0; i < progresses.Length; i++)
{
days[i] = (100 - progresses[i]) / speeds[i];
if (progresses[i] + speeds[i] * days[i] < 100)
days[i]++;
}
Queue<int> dayQueue = new Queue<int>(days);
List<int> answerList = new List<int>();
while(dayQueue.Count > 0)
{
int count = 0;
int prev = dayQueue.Dequeue();
count++;
while (true)
{
if (dayQueue.Count > 0 && prev >= dayQueue.Peek())
{
dayQueue.Dequeue();
count++;
}
else
break;
}
answerList.Add(count);
}
return answerList.ToArray();
}
'프로그래머스' 카테고리의 다른 글
프로세스 (C#) (0) | 2024.06.10 |
---|---|
의상 (C#) (0) | 2024.06.08 |
행렬의 곱셈 (C#) (0) | 2024.06.07 |
H-Index (C#) (0) | 2024.06.06 |
할인 행사 (C#) (1) | 2024.06.05 |