[백준] 2884

YUN·2025년 9월 12일

C++

목록 보기
11/79

요약하자면, 입력 받은 시간에서 45분을 뺀 시간을 출력하면된다.

1. <iostream>

#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분을 뺀 시간이 나오는 것을 이용한 풀이이다.

오답노트

(1) h=0인 경우에 대한 분기처리를 떠올리지 못했다.

h=0인 경우 h--를 수행하면 -1이 되버린다. 이를 그대로 출력하면 당연히 오답이다.

h=0 인 경우 m이 45보다 작다면 h=23을 수행해줘야한다.

테스트케이스를 집어넣어보는 것을 귀찮아서 생략했다.
다음부턴 귀찮더라도 테스트케이스 넣어보는 것을 꼭 해봐야겠다.

profile
안녕하세요. 전자공학부 학부생의 공부 기록입니다.

0개의 댓글