본문 바로가기
공부기록/[Algorithm]

백준 2884번 <알람 시계> - C++

by RiverWon 2024. 8. 1.

조건문 복습이다.

 

생각


1. M시 44분 이하일 때, 1시간 빼기. 60 - {45 - (현재 분)} 계산하기. (육십분법)

 - 0시 44분 → 23시 59분 (1시간 빼서 -1되면 23으로 바꿔주기)

2. 그외 (시간내림이 발생하지 않음)

#include <iostream>
using namespace std;

int main() {
    
    int a, b, c, d;
    
    cin >> a >> b;


    if(b <= 44){
        c = a -1;
        if( c == -1){ c = 23; }
        d = 60 - ( 45 - b );
    }
    else{
        c = a;
        d = b-45;
    }

    
    cout << c << " " << d << '\n';
    
    return 0;
}

나름 갈끔하게는 풀었다고 생각하는데, 이전에 풀었던 코드를 열어보자

 

이전에 어떻게 풀었더라?


#include <iostream>
using namespace std;

int main() {
	int hour, minute, min;
	cin >> hour >> minute;
	if (minute < 45)
		min = (60 - (45 - minute));
	else if (minute >= 45)
		min = minute - 45;

	if (hour > 0 && minute >= 45)
		cout << hour << " " << min;
	else if (hour > 0 && minute < 45)
		cout << hour - 1 << " " << min;
	else if (hour == 0 && minute < 45)
		cout << 23 << " " << min;
	else if (hour == 0 && minute >= 45)
		cout << hour << " " << min;
	return 0;
}

조건문을 작성하는 것 자체는 오늘 푼 코드가 더 깔끔하다. 이전에는 hour minute pair로 조건문을 작성했는데, 이번에는 출력될 시(hour)이 음수이면 23으로 처리를 해버리면서 전체 코드가 가독성좋고 짧아졌다.