https://www.acmicpc.net/problem/2884
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,
www.acmicpc.net
문제 설명
백준의 문제 - 단계별로 풀어보기의 [조건문] 의 2884 알람시계 문제입니다.
상근이는 지각을 하지 않기 위해 "45분 일찍 알람 설정하기"를 한다고 합니다. 상근이가 설정한 알람 시각에서 항상 45분을 뺀 값을 설정(출력) 하면 됩니다.
10시 50분 → 10시 5분
23시 45분 → 23시 0분
입력 받은 분이 45분 이상인 경우 시간에서 60분을 빌려올 필요가 없으므로, 분에 45만 빼면 됩니다.
10시 10분 → 9시 25분
23시 40분 → 22시 55분
위의 경우는 분이 45분보다 작은 경우이므로, 시간에서 60분을 빌려와 분에 60분을 더한 후 45분을 빼면 됩니다. 60분을 더하고 45분을 빼도 되지만, 결국 더하고 빼므로 15분만 더해도 됩니다.
0시 30분 → 23시 45분
마지막 경우는 두 번째처럼 분이 45분보다 작아, 시간에서 60분을 빌려오지만, 시간도 0시 이므로 -1시가 아닌 23시가 되어야합니다.
이러한 경우의 수를 적용하면 아래의 코드가 나옵니다.
코드 (C언어)
#include<stdio.h>
int main(void)
{
int hour, min;
scanf("%d%d", &hour, &min);
if(min >= 45) //첫 번째 경우
{
min -= 45; //min = min - 45;와 동일
}
else //분이 45분보다 작은 경우
{
if(hour > 0) //두 번째 경우
{
hour -= 1; //hour = hour - 1; 과 동일
}
else //세 번째 경우
{
hour = 23;
}
min += 15; //min = min + 60 - 45;와 동일
}
printf("%d %d", hour, min);
return 0;
}
'코딩' 카테고리의 다른 글
[C언어] 백준 BOJ 2480 주사위 세개 (0) | 2022.07.05 |
---|---|
[C언어] 백준 BOJ 2525 오븐시계 (0) | 2022.07.04 |
[C언어] 백준 BOJ 14681 사분면 고르기 (0) | 2022.07.02 |
[C언어] 백준 BOJ 2753 윤년 (0) | 2022.07.01 |
[C언어] 백준 BOJ 9498 시험 성적 (0) | 2022.06.30 |