https://www.acmicpc.net/problem/2884
if 문으로 분류된 알람시계 입니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _2884
{
class Program
{
static void Main(string[] args)
{
string[] splitInput = Console.ReadLine().Split(' ');
int minute = int.Parse(splitInput[1]) + 60 - 45;
int hour = int.Parse(splitInput[0]) + 23 + minute / 60;
Console.WriteLine("{0} {1}", hour % 24, minute % 60);
}
}
}
|
본래 문제의 의도는 입력 받는 분이 45 작을때를 예외처리 하고 시간이 0일때 예외처리 하는 것으로 예상됩니다.
하지만 %, / 를 이용한 계산으로 이를 한번에 했습니다.
우선 입력받는 분에 60을 더했습니다. 이는 45보다 작아 -의 값이 나오지 않게 하기 위함입니다.
+60 -45를 한번에 + 15로 해도 무방합니다.
분이 45보다 크거나 같은 경우 60 + 45를 했을 때 60보다 크거나 같은 값이 나옵니다.
분이 45보다 작은 경우 60보다 작은 값이 나올겁니다.
시간에도 23을 더했습니다. 이는 +24 - 1 을 한번에 하기 위함입니다. 45분 전으로 간다면 분이 45이하일 때만
시간이 1 빠져야 하지만 미리 1을 빼주고 나중에 분을 보고서 다시 더해주는 방식으로 했습니다. 분이 45보다 크거나
같을 경우에는 위 계산된 minute에 60보다 큰 값이 들어있기 때문에 / 60을 해서 몫을 더해줄 겁니다.
시간을 24로 나눈 나머지로, 분을 60으로 나눈 나머지로 출력합니다.
백준#10610 - 30 (0) | 2020.04.10 |
---|---|
백준#2217 - 로프 (0) | 2020.04.09 |
백준#14681 - 사분면 고르기 (0) | 2020.04.09 |
백준#2577 - 숫자의 개수 (0) | 2020.04.08 |
백준#2562 - 최댓값 (0) | 2020.04.08 |