알고리즘/백준

<백준> 2884번 알람시계 C++ 문제풀이

Han_5ung 2021. 1. 7. 23:14

 

 

 

알람 시계를 기상 시간보다 45분 이르게 설정하는 문제

 

ex) 

      9시           ☞    8시  15분

      2시 17분    ☞    1시 32분

 

풀이 

#include <iostream>

using namespace std;

int main() {
	int hour, min;
	cin >> hour >> min;     //시간, 분 입력
	if (min < 45) {         //45분보다 작을경우 시간 값에서 1을 빼고
		min = min + 15;     // 입력한 분에 + 15를 함
		hour = hour - 1;
		if (hour < 0)       // -1 한 시간 값이 0보다 작을 경우 23으로 변경
			hour = 23;  
	}
	else {
		min = min - 45;
	}

	cout << hour << " " << min << endl;
}

 

간단한 수학문제다

기존 시간보다 45분을 일찍 맞춰야 하기 때문에 입력한 분에서 -45 하면 된다.

하지만 45분보다 값이 작을 경우에 분이 -로 내려가는 문제가 생기게 된다.

이를 대비하기 위해 수학식을 이용한다

hour에서 60분을 끌어와 45분을 미리 빼주는 방법을 사용하게 되면

60분 - 45분 = 15분 즉 15분이라는 값이 생기게 된다.

여기서 남은 15분을 처음에 설정하게 된 min에 더하면 시계를 기준으로 한 정상 값을 구할 수 있다.

주의할 점은

시간에는 00 : 00이 존재한다는 것

00시에서 1시간을 빼면 23이 되어야 하기 때문에 if를 추가하여 23으로 바꿔준다.

 


www.acmicpc.net/problem/2884

 

2884번: 알람 시계

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

www.acmicpc.net