오늘 백준 사이트에 들어가 보니 if 문 단계에 문제가 하나 추가가 되었더라고요. 그래서 복습을 해볼 겸 오랜만에 if 문 문제를 가져왔습니다. 그럼 바로 문제를 풀어볼까요?
알람 시계(#2884) 문제는 입력된 시간에서 45분을 빼야 하는 문제입니다. 다만 시간은 60분 단위로 되어있기 때문에 일반적인 뺄셈 문제와는 조금 다르죠. 이 문제를 푸는 방법은 여러 가지가 있는데요, 제 생각에는 나눗셈과 나머지를 이용하는 게 제일 간단한 방법인 것 같더라고요. 코드를 살펴봅시다.
#include <stdio.h>
int main(void) {
int h, m, a;
scanf("%d %d", &h, &m);
if (h == 0)
h = 24;
a = h * 60 + m - 45;
h = a / 60;
m = a % 60;
if (h == 24)
h = 0;
printf("%d %d\n", h, m);
return 0;
}
1 시간이 60분이라는 특성을 이용해서 풀이한 방법입니다. 입력받은 시간과 분을 각각 h와 m 변수에 추가를 먼저 해준 뒤 분 단위로 바꿔서 45분을 빼준 거죠. 다만 0시 45분보다 작은 시간을 입력하게 되면 45분을 뺏을 때 되면 23시가 아닌 -1시로 표현되고, 분도 음수로 나오게 되죠. 그래서 if 문을 사용해 입력된 시간이 0이면 먼저 24로 변환해서 계산하고, 계산한 뒤에도 24시면 0으로 다시 바꿔주는 과정을 거쳐야 합니다.
계산된 값을 60으로 나누었을 때 몫은 시간, 나머지는 분으로 사용하면 되겠죠? 만약 이 부분이 정확히 이해가 안 된다면 08. 사칙연산 문제를 참고해 보세요.
테스트를 해 봅시다. 빌드한 뒤 시간을 입력해보면 45분을 뺀 시간이 출력되네요.
이제 제출을 합시다. 백준에서 언어를 C로 설정하고 제출을 하시면 됩니다.
성공!
반응형
'프로그래밍 > 백준' 카테고리의 다른 글
백준으로 배우는 파이썬 01. ??! (0) | 2024.09.16 |
---|---|
백준으로 배우는 C 언어 20. 별 찍기 - 2 (2) | 2020.03.16 |
백준으로 배우는 C 언어 18. 별 찍기 - 1 (3) | 2020.03.14 |
백준으로 배우는 C 언어 17. 기찍 N (4) | 2020.03.14 |
백준으로 배우는 C 언어 16. 합 (2) | 2020.03.13 |