IT 프로그래밍/백준

[c++] 백준 2525번 오븐 시계

기술1 2024. 3. 14. 21:26
반응형

 

 

2525번: 오븐 시계

첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)

www.acmicpc.net

제가 쓴 풀이


#include <iostream>

using namespace std;

int main()
{
	int hour, min;
	cin >> hour >> min;

	int a;
	cin >> a;

	
	
	if ((min + a % 60) >= 60)
	{
		cout << (hour + a / 60 + 1) % 24 << " " << (min + a % 60) % 60;
	}
	else
		cout << (hour + a / 60) % 24 << " " << min + a % 60;


	return 0;
}

조금 난잡하게 되어 있습니다. 

 

먼저 알고리즘을 푼 방식은 %와 /를 이용해줬습니다. 오븐시계가 만약 1000분 처럼 긴 시간이 될 때를 가정하고 1000분 나누기 60을 해서 시간 단위의 숫자를 더해주고 나머지를 구해주는 %를 통해 분을 구해줍니다. 

 

그런데 여기서 주의해야 할 점이 있습니다. 만약 시간이 23시를 가정할 때 25시처럼 넘어갈 수 있기 때문에 항상 시간에다 % 24를 통해 시간을 유지해주어야 합니다. 

 

이런 식으로 풀어주면 문제를 끝납니다. 

 

향상된 문제 풀이


#include <iostream>
 
using namespace std;
 
int main(int argc, char const *argv[]) {
 
	ios_base::sync_with_stdio(false);
 
	int A, B, C;
	cin >> A >> B >> C;
 
	int min = 60 * A + B; // 시 -> 분
	min += C;
 
	int hour = (min / 60) % 24;
	int minute = min % 60;
 
	cout << hour << " " << minute;
	return 0;
}

속도를 향상시켜준 방식입니다. 

반응형

'IT 프로그래밍 > 백준' 카테고리의 다른 글

[C++] 백준 10950번 A+B -3  (0) 2024.03.15
[C++] 백준 2739번 구구단  (0) 2024.03.15
[c++] 2480 주사위 세개  (0) 2024.03.14
[c++] 백준 2284번 알람시계  (0) 2024.03.14
[백준] 14681번 사분면 고르기 [C++]  (0) 2024.03.06