😈 알고리즘/💻 백준
💻 2884번 문제 : 알람 시계 ➕
Buᐢ༝ᐢy
2022. 9. 20. 15:08
2884번: 알람 시계
상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만, 조금만 더 자려는 마음은 그 어떤 것도 없앨 수가 없었다. 이런 상근이를 불쌍하게 보던, 창영이는 자신이 사용하는 방법을 추천해 주었다. 바로 "45분 일찍 알람 설정하기"이다.


#include <stdio.h>
int main()
{
int H, M;
scanf("%d%d", &H, &M);
if (45 <= M)
{
M -= 45;
}
else if (45 > M)
{
M -= 45;
H -= 1;
if (H == -1)
{
H = 23;
}
if (0 > M)
{
M *= -1;
M = 60 - M;
}
}
printf("%d %d", H, M);
}
➕ 다시 풀어보기
코드가 너무 긴 것 같아 다시 풀어보았다.
#include <stdio.h>
int main()
{
int H, M;
scanf("%d%d", &H, &M);
M -= 45;
if (M < 0)
{
M += 60;
H -= 1;
}
if (H < 0)
{
H += 24;
}
printf("%d %d", H, M);
}
코드가 훨씬 간결해진 것을 볼 수 있다. 진법을 생각하며 다시 풀었다.
입력값이 45보다 작으면 45를 뺐을 때 음수가 되는데 이전 코드에서는 양수로 만든 후 60에서 빼주었다. 이번에 풀 때는 음수가 되면 내가 사용하는 진법의 값을 더해주었다.
그리고 1시간의 전이 되므로 시간 역시 1시간 빼주었다.
Uploaded by N2T