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