안녕하세요.
이번에는 2884 번 알람시계 입니다.
링크는 여기입니다.
https://www.acmicpc.net/problem/2884
문제를 읽어보니 너무나 이해가 되는군요.
알람듣고 바로 일어나야 되는데 저도 모르게 알람을 끄고 잔 적이 많네요.
이렇게 알람을 마구 맞춰놓기도 하고... 아침에 일어나는 일은 정말이지 너무 힘든 것 같습니다.
여하튼간에 문제를 풀어봅시다. 우리 상근이를 위해서.
45분을 일찍 맞춰야 되는 문제네요.
그럼 생각할 것이 몇 가지 있겠습니다.
일어나야 할 시간이 45분 이후면 45분을 빼주면 되겠네요.
45분보다 일찍이면 1시간을 빼주고, 분에서 60을 더한 뒤 45분을 빼주면 되겠네요.
끝인가요?
하나를 더 생각해야 합니다.
0시 0분이 주어질 수도 있다는 말입니다.
그럼 1시간을 빼버리면 -1 시간이 아니라 전날 23시 ~~ 분이 되어야 맞겠네요.
그것까지 감안해서 코드를 짜보겠습니다.
#include <stdio.h>
int main()
{
int h = 0, min = 0;
scanf("%d %d", &h, &min);
if (min < 45 && h > 0)
{
h--;
min = min + 60 - 45;
}
else if (min < 45)
{
h = 23;
min = min + 60 - 45;
}
else
min -= 45;
printf("%d %d", h, min);
return 0;
}
저는 이렇게 짜보았습니다.
&& 는 AND 로, 나열한 조건이 모두 충족되어야 if 문 안에 있는 코드가 실행 됩니다.
OR 로는 || 이 있습니다. (여러 가지 중 한 가지라도 충족되면 실행) 역슬래쉬를 shift 키 누르고 누르시면 됩니다.
45분보다 일찍이고 시간이 1시간 이상이면 1시간 빼주고, 분은 60분 더한 뒤 45분을 빼줬습니다.
45분보다 일찍인데, 시간이 0시면, 23시로 해주고 분을 계산 해줬습니다.
45분보다 나중인 경우는 단순하게 45분을 빼주면 되겠죠.
감사합니다.
'백준 문제풀이 > 조건문' 카테고리의 다른 글
백준 10817 C / 단계별로 풀어보기 - if문 5 (0) | 2019.12.05 |
---|---|
백준 2753 C / 단계별로 풀어보기 - if문 3 (0) | 2019.12.04 |
백준 9498 C / 단계별로 풀어보기 - if문 2 (0) | 2019.12.04 |
백준 1330 C / 단계별로 풀어보기 - if문 1 (0) | 2019.12.04 |