본문 바로가기

Coding Tests/백준 온라인

(C언어) 백준온라인 2884번

<문제> https://www.acmicpc.net/problem/2884
 

2884번: 알람 시계

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

www.acmicpc.net

 

<풀이>

#include<stdio.h>
int main(void) {
	
	int h, m,s;
	scanf("%d %d", &h, &m);

	if (m >= 45)
	printf("%d %d", h, m - 45);
	
	if (m < 45) {
		s = 45 - m;
		if (h == 0)
			printf("23 %d", 60 - s);
		if(h!=0)
		printf("%d %d", h - 1, 60 - s); 
	}
	return 0;
}

m < 45 이고 h가 0일때 h의 위치에 23이 출력이 되게끔 설정해줌으로써 h가 0일때의 까다로움을 해결해주었다.

그리고 h가 0일때 h != 0의 조건을 달아주지 않고 그대로 출력을 한다면, h==0의 조건에서 한번 출력을 하고, 밑에 출력문을 통해 한번 더 출력을 하게 되 의도치 않게, 출력값 두개를 볼 수 도 있다.

 

원래 처음에는 h != 0의 조건 대신, h==0의 조건을 만족하게 되면 break를 사용해 조건을 끝내고자 하였는데, 밑에 보이는 것과 같이 break문은 반복문, switch문 내에서만 사용이 가능하다. 

 

break의 사용