Programming Language/C#
[C#] TQC+ 문제 CS_403
공구일
2025. 5. 20. 17:45
728x90
🔍C#: CS_403 .
주어진 날짜값과 주어진 미팅 시간을 비교해서 예약할 수 있는지의 여부를 출력하시오.
1. 문제 정답
using System;
using System.IO;
using System.Globalization;
namespace CS_403{
class CS_403
{
static string[] meetingDates = { "2018/12/01 14:00", "2018/12/02 15:00", "2018/12/03 10:30","2018/12/03 15:30","2018/12/04 15:00" };
static int[] meetingHours = { 1, 3, 4, 2, 5};
static void Main()
{
try
{
string input = Console.ReadLine()?.Trim() ?? "";
DateTime dt = DateTime.ParseExact(input, "yyyy/MM/dd HH:mm", CultureInfo.InvariantCulture);
string output = "";
for (int i = 0; i < 5; i++)
{
DateTime mdt = DateTime.ParseExact(meetingDates[i], "yyyy/MM/dd HH:mm", CultureInfo.InvariantCulture);
if(dt.Date == mdt.Date){
if (dt >= mdt && dt < mdt.AddHours(meetingHours[i])) {
output = $"Has already reserved - {meetingDates[i]}";
break;
}
} else {
output = $"Reservation completed - {input}";
}
}
Console.Write(output);
}
catch
{
Console.Write("error");
}
}
}
}
- 들어온 날짜값이 틀리지 않다면, 비교를 할 때 예약가능 상태가 디폴트임을 알고 만약에 시작시간이 갖거나 중간값이라면 중복값으로 특수한 상황인 예약불가를 곧바로 설정 후 이후 가능상태로 변하지 않게 break해주는 것이 중요합니다.
2. 정리
- ?.Trim()은 null이 아니면 공백을 제거하라는 의미입니다.
- TimeDate은 날짜와 시간 정보를 다룰 수 있게 해주는 구조체로 날짜 비교, 시간을 더하고 빼는 등의 작업을 수행합니다. Year, .Month, .Hour, .Date 등을 이용할 수 있습니다. TimeSpan은 시간 간격과 경과 시간을 나타내는 구조체입니다. .TotalHours, .Minutes, .Se
conds 등을 이용할 수 있습니다.
- ParseExact()는 지정된 형식과 일치해야 파싱되는 함수입니다. 지정한 형식과 같지 않으면 오류가 발생합니다. CultureInfo.Invariant
Culture은 문화권 영향을 받지 않게 고정된 형식을 사용하겠다는 의미입니다. 이걸 사용하기 위해서는 using System.Globalization; 이 네임스페이스를 사용해줘야합니다.
728x90