[백준] 2884 알람 시계

권태형·2023년 12월 1일

알고리즘

목록 보기
13/33

입력된 시간에서 45분만 빼서 출려해 주면되는 문제라고 생각했다.

나의 풀이

일단은 매번 첫번째 줄에서 받는 문자열을 하나하나 뜯어서 int형태로 바꿔주는 작업이 귀찮아서 메소드를 살펴보니
Array.ConverAll()이라는 메소드가 있어서 사용해보았다.

int[] t = Array.ConvertAll(Console.ReadLine().Split(" "), int.Parse);

if(t[1] >= 45) Console.WriteLine($"{t[0]} {t[1] - 45}" );
else Console.WriteLine($"{t[0]-1} {t[1] + 15}");

깔끔하게 틀렸습니다! 잉? 문제를 읽고 뇌지컬로 막 썼다. 45분과 같거나 그보다 크다면 시간은 변하지 않고 분만 45분을 빼서 주면되고, 나머지는 시간에서 한시간 빼주고, 60에서 45을 뺀 나머지 15를 더해주면 된다고 생각했다.

그런데 틀렸다.... 음.. 이유가 뭐지? 하고 입력 예제를 하나하나 대입해봤는데 바로 2번 예제에서 틀려버렸다.

시간이 0시 30분이면, -1시 45분이 되버리는데, 이런 시간이 존재할리 없지..

int[] t = Array.ConvertAll(Console.ReadLine().Split(" "), int.Parse);

if(t[1] >= 45) Console.WriteLine($"{t[0]} {t[1] - 45}" );
else {
    if(t[0] == 0) Console.WriteLine($"23 {t[1] + 15}");
    else Console.WriteLine($"{t[0]-1} {t[1] + 15}");
}

처음 입력된 시간대가 0시일때는 23시를 출력하도록 바꾸니까 바로 통과되었다.


다른사람 풀이

DateTime dt=DateTime.ParseExact(Console.ReadLine(),"H m",null).AddMinutes(-45);Console.Write("{0} {1}",dt.Hour,dt.Minute);

이번에도 DateTime이 또 나왔다. ParseExact()라는 내장함수 경험의 차이일까? 메소드를 많이 알지 못하는 나로써는 생각해 내지 못할 방식이었다.

또한 Console.Write()로 Line을 적는게 아니라 특정 포멧을 기준으로 작성하는 방법도 신기했다.

profile
22년 12월 개발을 시작한 신입 개발자 ‘권태형’입니다. 포스팅 하나하나 내가 다시보기 위해 쓰는 것이지만, 다른 분들에게도 도움이 되었으면 좋겠습니다. 💯컬러폰트가 잘 안보이실 경우 🌙다크모드를 이용해주세요.😀 지적과 참견은 언제나 환영합니다. 많은 댓글 부탁드립니다.

0개의 댓글