2884번: 알람 시계

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

www.acmicpc.net

 

코드1

#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>

int main()
{
	int hour, min, temp;
	scanf("%d %d", &hour, &min);
	
	temp = min - 45;
	
	if (temp < 0 && 0 != hour) {
		hour -= 1;
		min = 60 + temp; //temp가 -이기에 +연산자 사용.
	}

	else if(temp < 0 && 0 == hour) {
		hour = 23;
		min = 60 + temp;
	}

	else {
		min = temp;
	}

	printf("%d %d", hour, min);

	return 0;
}

 

코드2

#define _CRT_SECURE_NO_WARNINGS
#include <cstdio>

int main()
{
	int hour, min;
	scanf("%d %d", &hour, &min);

	min = min - 45;

	if (min < 0) {
		min += 60;
		//hour = (hour - 1) % 24;
		// 시간에 0이 입력되면 시간 출력이 -1로 나옴. 그렇기에, 
		// 시간이 하나 빼진 23을 더해주고 모듈러 연산을 하면 23이 나올 수 있게 됨.
		// 23을 더해주어봤자 어차피 모듈러 연산이기에 값은 0~23범위에서 나올 것임.
		hour = (hour + 24 - 1) % 24;
	}

	printf("%d %d", hour, min);

	return 0;
}

'역시 내 문제해결 알고리즘은 잘못됐다' 카테고리의 다른 글

백준 1546번 C/C++  (0) 2020.12.30
백준 1152번 C/C++  (0) 2020.12.30
백준 2750번 C/C++  (0) 2020.08.07
백준 11721번 C/C++  (0) 2020.07.15
백준 10951번  (0) 2020.07.13