백준 링크 : https://www.acmicpc.net/problem/2884

문제 개요

입력으로 ‘시’ ‘분’이 들어오면 45분 이전을 출력하는 문제이다.

예를들어, 10시 10분을 입력받으면 45분 이전인 9시 25분을 출력하는 문제이다.

아이디어


주의사항


코드


// 아래의 코드는 dev c++환경에서 동작됩니다.
// visual studio에서는 bit/stdc++.h가 기본적으로 없기 때문에
// 정삭적인 작동이 되지 않을 수 있습니다.
#include <bits/stdc++.h>
using namespace std;

int idx, h, m;

// 시, 분 -> 분
int ToMinute(int hour, int minute)
{
	return hour * 60 + minute;
}

// 분 -> 시, 분
void ToHourMinute(int totalMinute, int& hour, int& minute)
{
	hour = totalMinute / 60;
	minute = totalMinute % 60;
}

// 음수를 예외처리하는 함수
int clampTime(int minute)
{
	if(minute < 0)
	{
		return minute += 60 * 24;
	}
	return minute;
}

int main() {
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	
	cin >> h >> m;
	int totalMinute = ToMinute(h, m);
	
	ToHourMinute(clampTime(totalMinute - 45), h, m);
	
	cout << h << " "<< m;
    return 0;
}

후기


단위를 통일하지 않고 if문으로 모든걸 처리하려니 실수가 잦았었다. 시간 문제뿐 아니라 계산할 땐 단위를 통일하는 것이 여러모로 편한듯하다.