먼저 팀1이 이기고 있던 시간과 팀2가 이기고 있던 시간을 2880초로 초기화 해준다.
int time1 = 2880;
int time2 = 2880;
골이 들어갔다면 골이 들어간 시각과 직전 골이 들어간 시각의 차를 계산해서
비기고 있는 상황이었다면 time1, time2 모두에서 차를 빼주고
팀1이 이기고 있는 상황이었다면 time2 에서 차를 빼주고
팀2가 이기고 있는 상황이었다면 time1 에서 차를 빼준다.
void cal(string s){
int temp = 60*m + sec;
m = stoi(s.substr(0,2));
sec = stoi(s.substr(3,2));
t = 60*m + sec - temp;
if(team1 == team2){
time1 -= t;
time2 -= t;
}
else if(team1 > team2)
time2 -= t;
else
time1 -= t;
if(whosGoal == 1) team1++;
else team2++;
}
cal("48:00")를 마지막에 한번 더 호출해서 경기종료 휘슬을 불어준다.
#include <bits/stdc++.h>
using namespace std;
int N,whosGoal,m,sec,t;
string s;
int team1,team2;
int time1 = 2880;
int time2 = 2880;
void cal(string s){
int temp = 60*m + sec;
m = stoi(s.substr(0,2));
sec = stoi(s.substr(3,2));
t = 60*m + sec - temp;
if(team1 == team2){
time1 -= t;
time2 -= t;
}
else if(team1 > team2)
time2 -= t;
else
time1 -= t;
if(whosGoal == 1) team1++;
else team2++;
}
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> N;
for(int i=0; i<N; i++){
cin >> whosGoal >> s;
cal(s);
}
cal("48:00");
cout << time1/600 << (time1%600)/60 << ":" << (time1/10)%6 << time1-(time1/10)*10 << "\n";
cout << time2/600 << (time2%600)/60 << ":" << (time2/10)%6 << time2-(time2/10)*10 << "\n";
}
문자열에서 원하는 항목 추출, 요구대로 출력을 할 수 있는지 물어보는 문제.
농구경기의 진행을 생각하며 직관적으로 코드를 짜 보았다.