C# 1931번 회의실 배정

2022. 2. 7. 19:21C#/[백준] 그리디 알고리즘

문제

코드 :

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _2
{
    class Program
    {
        static void Main(string[] args)
        {
            int N = Convert.ToInt32(Console.ReadLine());

            //2중리스트
            List<List<int>> Meetings = new List<List<int>>();

            int start, count;

            start = 0;
            count = 0;

            for (int i = 0; i < N; i++)
            {
                var input = Array.ConvertAll(Console.ReadLine().Split(' '), int.Parse);
                Meetings.Add(new List<int> { input[0], input[1] });
            }

            //정렬
            var sortedMeeting = Meetings.OrderBy(x => x[1]).ThenBy(x => x[0]).ToArray();

            for (int i = 0; i < N; i++)
            {
                    if (start <= Convert.ToInt32(sortedMeeting[i][0]))
                    {
                        //Console.WriteLine("Start : " + Convert.ToInt32(sortedMeeting[i][0]) + " end : " + Convert.ToInt32(sortedMeeting[i][1]));
                        start = Convert.ToInt32(sortedMeeting[i][1]);
                        count += 1;
                    }
                
            }
            Console.WriteLine(count);
        }
    }
}

문제 풀이 :

끝나는 시간이 빠른 회의를 선택하고 끝나는 시간이 같을 경우 시간하는 시간이 빠른 순으로 정렬을 먼저 한다

정렬 배열에서 인덱스가 0인 것을 먼저 회의로 선택하고 끝나는 시간을 start에 넣어주고 start보다 회의 시작시간이 늦은 것을 고르고 해당 회의의 끝나는 시간을 다시 시작시간으로 넣어주며 count해주면 된다.

'C# > [백준] 그리디 알고리즘' 카테고리의 다른 글

C# 13305번 주유소  (0) 2022.02.07
C# 1541번 잃어버린 괄호  (0) 2022.02.07
C# 11399번 ATM  (0) 2022.02.07
C# 11047번 동전 0  (0) 2022.02.07