https://www.acmicpc.net/problem/2852
1번 팀과 2번 팀이 농구경기를 하는데 n번에 걸쳐 골이 들어가고 n개의 줄에 각각 득점 정보인 득점한 팀의 번호, 득점한 시간이 주어질 때,
1번 팀이 이기고 있던 시간, 2번 팀이 이기고 있던 시간을 MM:SS(분:초)의 형태로 출력하는 문제다.
MM:SS
로 주어지는 입력은 초로 변환하자!
winningTeam
(득점한 팀)과 curTime
(현재 득점 시간)이 입력되면
teamWinningTime[isWinning]
(이기고 있는 팀의 총 이긴 시간)
=curTime
(현재 득점 시간) - prevTime
(직전 득점 시간) 이다.
isWinning을 반복문의 마지막에 정하는 이유는 동점일 때까지 이전에 이기던 애가 이기는 시간으로 보기 때문이다.
2자리 0으로 채워서 출력하기
printf("%02d", 5)
> 05
#include<iostream>
#include<algorithm>
#include<string>
#include<stdio.h>
using namespace std;
int n, winteam, curTime, isWinning, prevTime;
int score[3], teamWinningTime[3];
string inputTime;
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
cin >> n;
while (n--) {
cin >> winteam >> inputTime;
score[winteam]++;
curTime = ((inputTime[0] - '0') * 10 + inputTime[1] - '0') * 60 + ((inputTime[3] - '0') * 10 + inputTime[4] - '0');
teamWinningTime[isWinning] += curTime - prevTime;
prevTime = curTime;
isWinning = score[2] > score[1] ? 2 : score[1] > score[2] ? 1 : 0;
}
teamWinningTime[isWinning] += (48 * 60) - prevTime;//마지막에 이긴 애
printf("%02d:%02d\n", teamWinningTime[1] / 60, teamWinningTime[1] % 60);
printf("%02d:%02d\n", teamWinningTime[2] / 60, teamWinningTime[2] % 60);
}