PS알못 OrbitHv의 PS logo PS알못 OrbitHv의 PS

태그:

2. if문 CLASS 1

주어진 시간(시 분 형태)에서 45분을 뺀 시간을 시 분 형식으로 출력하는 문제입니다. 먼저 고려해야 할 것은 분 값입니다. 45분을 뺄 때 기존 시간의 분이 45분보다 작다면 시 값을 1 빼고 분은 45분을 빼는 대신 15분을 더해야 할 것입니다. 14시 30분에서 45분을 빼면 13시 45분이 되는 것처럼 말이죠. 한 가지 더 고려할 것이 있는데, 0시 0분에서 0시 44분까지의 시간에서 45분을 뺴려면 하루를 뒤로 돌리고 시간은 23을 더해야 합니다. 이 두 조건을 모두 고려하여 시간을 출력하면 됩니다.

위의 조건 중 두 번째 조건을 무시하는 방법이 있습니다. 나머지 연산을 이용하는 것인데요, 먼저 첫 번째 조건인 분이 45보다 작은 경우 1시간을 뒤로 돌리고 15분을 더하는 방식을 택했습니다. 그런데 0시인 경우에는 23시로 돌려야했죠. 이 두 과정을 하나로 합쳐서 1을 뺴는 대신 23을 더하고 24로 나눈 나머지를 구하는 방식을 사용할 수 있습니다. 0인 경우 \(0+23=23\equiv 23\pmod{24}\)이므로 23이 되고, 나머지는 \(n+23=(n-1)+24\equiv (n-1)\pmod{24}(n\ge 1)\)가 되어 1을 뺀 값을 얻을 수 있습니다.
이 방식을 분 값에 적용하면 첫 번째 조건에서 처리할 것이 더 적어집니다. 마찬가지의 방법으로 45를 빼는 대신 15를 더하고 60으로 나눈 나머지를 구하는 것이죠. 그러면 분이 45보다 크거나 같은 경우는 45를 뺸 값, 45보다 작은 경우는 15를 더한 값을 얻을 수 있습니다.

소스 코드

언어 코드 시간
Python 3 코드(Github) / 코드(백준) 2020-03-24 14:32:13