
이전에 풀었던 문제와 비슷하다. 이번에는 저번문제 다른사람풀이에서 영감을 받은 DateTime을 이용해 풀어보도록 하자.
DateTime dt = DateTime.ParseExact(Console.ReadLine(),"H m",null);
DateTime dt2 = dt.AddMinutes(double.Parse(Console.ReadLine()));
Console.WriteLine($"{dt2.Hour} {dt2.Minute}");

첫번째 받은 문자열을 DateTime의 형태로 바꿔서 dt에 저장하고, 두번째 받은 문자열을 dt에 추가하여 출력하는 식으로 하였다.
코드도 아주 간결하고 알아보기도 쉬운 형태였다.
하지만 여기서 의문점이 들었다. 지금 단계별 문제풀이의 조건문 부분을 풀이하고 있는데, 이 코드의 어디가 조건문인가?
역시 if조건문을 이용해서 이전에 풀었던 방식의 답을 원하는 그런 문제이지 않을까?라는 의문을 지울 수 없었다.
var t=Console.ReadLine().Split().Select(int.Parse).ToArray();
int m=t[0]*60+t[1]+int.Parse(Console.ReadLine());Console.Write(m/60%24+" "+m%60);
숏코드 가장 위에있는 풀이방법이 이 방법이었는데, 첫번째 받은 문자열을(Console.ReadLine()) 나눠서 배열화 하고 (Split()), LINQ Select()를 이용해 IEnumerable<int>타입의 객체로 변환 후 이를 다시 배열로 변환하여 t가 int 배열을 가질 수 있도록 만든다.
그 다음 시간(t[0])에 60을 곱해 시간을 분형태로 바꿔서 이후 모든 분을 더 한후 출력할때 분을 다시 시간으로 출력하고, 나머지에 60을 곱해 남은 분을 출력한다.
아무리 봐도 짧은 코드는 맞지만 가독성이 이게 맞는건가? 두 줄의 코드를 알아보기 위해서 이것저것 찾아봐야하는게 조금 있었다. 특히 Select()의 경우 IEnumerable<int>타입의 객체로 변환하는 것을 몰라서 왜 뒤에 다시 또 배열화를 해주는지 이해하기 힘들었고,
문자열 >> 문자열 배열 >> IEnumerable<int>타입의 객체 >> 숫자배열 의 형태로 자료형을 바꾸는 과정이 빈번히 일어나는게 불편하게 느껴졌다.
이 또한 과연 조건문에 해당되는 문제를 푸는 방식이 맞는가? 또 다시 의문을 품게 만드는 풀이 방식이었다.