본문 바로가기
프로그래머스

기능개발 (C#)

by LemongO 2024. 6. 9.

📌프로그래머스 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