반응형
[ 문제 ]
한 개의 회의실이 있는데 이를 사용하고자 하는 N개의 회의에 대하여 회의실 사용표를 만들려고 한다. 각 회의 I에 대해 시작시간과 끝나는 시간이 주어져 있고, 각 회의가 겹치지 않게 하면서 회의실을 사용할 수 있는 회의의 최대 개수를 찾아보자. 단, 회의는 한번 시작하면 중간에 중단될 수 없으며 한 회의가 끝나는 것과 동시에 다음 회의가 시작될 수 있다. 회의의 시작시간과 끝나는 시간이 같을 수도 있다. 이 경우에는 시작하자마자 끝나는 것으로 생각하면 된다.
[ 코드 ]
1. 내 코드
StreamReader sr = new StreamReader(new BufferedStream(Console.OpenStandardInput()));
StreamWriter sw = new StreamWriter(new BufferedStream(Console.OpenStandardOutput()));
int n = int.Parse(sr.ReadLine());
int count = 0;
(int start, int end)[] arr = new (int start, int end)[n];
int correntEnd = 0;
for (int i = 0; i < n; i++)
{
string[] s = sr.ReadLine().Split();
arr[i] = (int.Parse(s[0]), int.Parse(s[1]));
}
arr = arr.OrderBy(x=> x.end).ThenBy(x=> x.start).ToArray();
for (int i = 0;i < n; i++)
{
if (arr[i].start >= correntEnd)
{
count++;
correntEnd = arr[i].end;
}
}
sw.Write(count);
sw.Flush();
sw.Close();
sr.Close();
2. 다른 사람 코드
using System;
public class Program
{
struct Meeting : IComparable<Meeting>
{
public int start, end;
public Meeting(int s, int e)
{
start = s; end = e;
}
public int CompareTo(Meeting other)
{
if (end == other.end)
return start - other.start;
return end - other.end;
}
}
static void Main()
{
int n = int.Parse(Console.ReadLine());
Meeting[] array = new Meeting[n];
for (int i = 0; i < n; i++)
{
string[] se = Console.ReadLine().Split(' ');
int s = int.Parse(se[0]), e = int.Parse(se[1]);
array[i] = new(s, e);
}
Array.Sort(array);
int prev = 0, answer = 0;
for (int i = 0; i < n; i++)
{
if (array[i].start >= prev)
{
answer++;
prev = array[i].end;
}
}
Console.Write(answer);
}
}
[ 실행화면 ]
- (2 ,3), (4, 4)가 가능하기때문에 입력 순서대로 카운트를 하게되면 1이 나오게된다.
end값을 기준으로 정렬 후 start값으로 정렬한다.
문제링크: https://www.acmicpc.net/problem/1931
1931번: 회의실 배정
(1,4), (5,7), (8,11), (12,14) 를 이용할 수 있다.
www.acmicpc.net
반응형
'Language > C#' 카테고리의 다른 글
[C#] 백준 10569번 다면체 (오일러의 다면체 정리) (0) | 2024.04.03 |
---|---|
[C#] 백준 N과 M (1) (백트래킹 재귀함수) (0) | 2024.04.02 |
[C#] 백준 11047번 동전 0 (0) | 2024.04.02 |
[C#] 백준 25501번 재귀의 귀재 (0) | 2024.04.01 |
[C#] 백준 20920번 영단어 암기는 괴로워 (0) | 2024.03.31 |