본문 바로가기
코딩테스트

[C] 백준 2884번 - '알람 시계' 풀이

by CuckooBird 2023. 1. 14.

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

 

2884번: 알람 시계

상근이는 매일 아침 알람을 듣고 일어난다. 알람을 듣고 바로 일어나면 다행이겠지만, 항상 조금만 더 자려는 마음 때문에 매일 학교를 지각하고 있다. 상근이는 모든 방법을 동원해보았지만,

www.acmicpc.net

 


코드

#include <stdio.h>

int main(void) {
	int H, M;
	scanf("%d %d", &H, &M);
    
	M -= 45;
	if (M < 0) {
		M += 60;
		H--;
	}
	if (H < 0) {
		H += 24;
	}
	printf("%d %d", H, M);

	return 0;
}

2525번 오븐시계와 비슷한 문제였습니다.

오븐시계 보러가기 >

https://cuckoobird.tistory.com/21

 

[C] 백준 2525번 - '오븐 시계' 풀이

https://www.acmicpc.net/problem/2525 2525번: 오븐 시계 첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23

cuckoobird.tistory.com

 

H와 M을 입력받아 M에 45를 빼주고, M이 음수라면 60을 더하여 분을 구합니다. 분이 음수가 되었다는 것은 시간 단위도 한시간 빼주어야 하므로 H에 1도 빼줍니다.

만약 H가 음수일 경우도 생각해줘야 합니다. 만약 H가 음수가 된다면 H에 24를 더해줘야합니다.

 

H와 M이 음수일 경우, 24와 60을 빼주는 것이 아니라 더해줘야 한다는 점만 실수하지 않도록 유의하면 될 것 같습니다.


후기

예전에 풀었을 때는 분명 어려웠던 것 같은데 이제와서 푸니 쉽게만 느껴집니다. 작더라도 지속적인 연습이 지금의 실력을 만들지 않았나 싶습니다. 물론 아직 모자릅니다마는 새삼 뿌듯함이 느껴집니다. ㅎㅎ