
주의할 점은 분이 60 이상이면 시를 1 증가시켜주는 것, 24,25,26시,, 는 0,1,2,,,시로 표시하는 것 이다.
이를 위해서 우선 전부 분 단위로 변환하고 그다음에 시,분을 각각 구해주는 방법을 선택했다.
위의 방법으로하면 자리올림 같은 경우 신경안써줘도되고 편하게 할 수 있다.
#include <iostream>
using namespace std;
int main() {
int h, m, add;
int total;
cin >> h >> m >> add;
total=60*h+m+add;
h = (total/60)%24;
m = total - 60*(total/60);
cout << h << " " << m;
return 0;
}
지금 이 문제가 복잡하게 느껴지는 이유는 단위가 시와 분으로 쪼개어져있기 때문이다.
따라서 시간을 나타내는 단위를 전부 분으로 통일해주고 -> % 와 /를 통해
여기서 다시 시와 분을 추출하는 것이 가장 기본적인 풀이이다.
#include <iostream>
using namespace std;
int main() {
int h1, m1, m2;
cin >> h1 >> m1 >> m2; // 17 40 80
m1 += m2; //120
h1 = (h1 + (m1/60)) % 24; //19
m1 %= 60; //0
cout << h1 << " " << m1 << endl;
return 0;
}
처음에는 위와같이 풀이했다.
시간은 그대로 두고, 분 끼리만 서로 더해서 -> 모듈러 연산 -> 시간에 더해주고 (시간은 또 24로 모듈러) -> 모듈러 60으로 분을 구해주고
의 흐름이다.