알고리즘

C언어 - 백준 알고리즘 2884 알람시계

chadongmin 2022. 4. 12. 15:53

설정한 시간보다 45분 일찍 울리는 알람시계를 만드는 문제이다.

 

RAPTOR를 활용하여 순서도를 먼저 만들어보았다.

 

이 알고리즘을 만들기 위해서 고려해야 할 점은, 시계는 60분이 한 시간이라는 것.

 

그리고 설정한 시간보다 45분 일찍 울리는 점이라는 것을 생각하여야 한다.

 

설정한 시각이 xx시 44분이라면 '시'가 바뀌게 되고, 45분 이상이라면 '시'가 유지된다.

 

그래서 if문을 사용하여 설정한 시각이 45분보다 빠를 때, '시'에서 1을 빼고 한시간이 60분이니 (minute + 60) -45 를 한다.

 

하지만 이 순서도는 잘못된 순서도이다.

 

 

하지만 이 순서도에서 내가 생각하지 못한 점이 있다. 
시간은 24시간 이므로, 0시에서 1을 빼면 23시가 되어야 한다는 것

*if문을 중첩시켜 hour가 0인지부터 판단한 뒤, 0이라면 minute가 45분보다 작을 때는 hour가 23시가 되게 해주어야 한다.

 

 

#include <stdio.h>

int main(void) {

	int hour, min;

	scanf("%d %d", &hour, &min);

	if (hour != 0) {

		if (min < 45) {

			hour = hour - 1;
			min = (min + 60) - 45;

			printf("%d\n", hour);
			printf("%d\n", min);
		}

		else {


			min = min - 45;

			printf("%d\n", hour);

			printf("%d\n", min);
		}

	}

	else {

		if (min < 45) {

			hour = 23;
			min = (min + 60) - 45;

			printf("%d\n", hour);
			printf("%d\n", min);
		}

		else {


			min = min - 45;

			printf("%d\n", hour);

			printf("%d\n", min);
		}

	}


	
	return 0;


}