상세 컨텐츠

본문 제목

백준#2884 - 알람시계

C#/알고리즘

by McRobbin 2020. 4. 9. 12:08

본문

https://www.acmicpc.net/problem/2884

 

2884번: 알람 시계

문제 상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다. 이 방법은 단순하다. 원래 설정되어 있는 알람을 45분 앞서는 시간으로 바꾸는 것이다.

www.acmicpc.net

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;
using System.Threading.Tasks;
 
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으로 나눈 나머지로 출력합니다.

'C# > 알고리즘' 카테고리의 다른 글

백준#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

관련글 더보기