
요약하자면, 입력 받은 시간에서 45분을 뺀 시간을 출력하면된다.
#include <iostream>
using namespace std;
int main() {
int h,m;
cin >> h >> m;
m=m-45;
if(m>=0){
cout << h << " " << m;
} else {
if(h==0) {
h=23;
} else {
h=h-1;
}
m=60+m;
cout << h << " " << m;
}
return 0;
}
이렇게했는데, 코드가 비효율적인 것 같다.
#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분보다 작은 경우 입력한 분에 +15분만 해주면 45분을 뺀 시간이 나오는 것을 이용한 풀이이다.
h=0인 경우 h--를 수행하면 -1이 되버린다. 이를 그대로 출력하면 당연히 오답이다.
h=0 인 경우 m이 45보다 작다면 h=23을 수행해줘야한다.
테스트케이스를 집어넣어보는 것을 귀찮아서 생략했다.
다음부턴 귀찮더라도 테스트케이스 넣어보는 것을 꼭 해봐야겠다.