동혁이는 NBA 농구 경기를 즐겨 본다. 동혁이는 골이 들어갈 때 마다 골이 들어간 시간과 팀을 적는 이상한 취미를 가지고 있다.
농구 경기는 정확히 48분동안 진행된다. 각 팀이 몇 분동안 이기고 있었는지 출력하는 프로그램을 작성하시오.
첫째 줄에 1번 팀이 이기고 있던 시간, 둘째 줄에 2번 팀이 이기고 있던 시간을 출력한다. 시간은 입력과 같은 형식(MM:SS)으로 출력한다.
골을 넣은 시간이 들어올 때 이전 골이 들어온 시간까지의 이긴 시간을 갱신해준다.
풀면서 알고리즘보단 입출력에서 애를 먹었다.
문제를 풀면서 알게 된 사실은 다음과 같다.
cin.tie(0);
cou.tie(0);
cin.sync_with_stdio(0);
를 쓰고 cin과 scanf를 같이 쓰면 의도치 않은 결과가 발생할 수 있다고 한다.
cin과 scanf를 동시에 쓰고 싶다면 저 3줄의 코드는 지우고
#pragma warning (disable:4996)를 #include 다음에 작성하면 된다.
#include <iostream>
#pragma warning (disable:4996)
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
int n;
int main()
{
cin >> n;
int team;
int min,sec;
int scoreA=0, scoreB = 0;
int timeA=0, timeB = 0;
int cur = 0;
for (int i = 0; i < n; i++) {
cin >> team;
scanf("%2d:%2d", &min,&sec);
if (scoreA > scoreB) {
timeA += min * 60 + sec - cur;
}
else if (scoreA < scoreB) {
timeB += min * 60 + sec - cur;
}
if (team == 1) {
scoreA++;
}
else {
scoreB++;
}
cur = min * 60 + sec;
}
if (scoreA > scoreB) {
timeA += 2880 - cur;
}
else if (scoreA < scoreB) {
timeB += 2880 - cur;
}
printf("%02d:%02d\n", timeA / 60, timeA % 60);
printf("%02d:%02d\n", timeB / 60, timeB % 60);
return 0;
}