본문 바로가기

알고리즘 문제

[C/C++ 백준 2852번] NBA 농구 (Silver 3)

www.acmicpc.net/problem/2852

 

2852번: NBA 농구

첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득��

www.acmicpc.net

잘 받아서 구현을 해주면 되는 문제.

시간의 차이를 구하는 시점과 새 스코어를 저장하는 시점을 잘 주의하자.

 

#include <cstdio>
int main(void){
	int N, team;
	int Atime=0, Btime=0, Ascore=0, Bscore=0;
	scanf("%d", &N);
	for(int i=0; i<N; i++){
		int hour, min, savehour, savem;
		scanf("%d", &team);
		scanf("%2d:%2d", &hour, &min);
		if(i!=0){
			if(Ascore>Bscore){
				Atime += ((hour - savehour)*60 + (min-savem));
			}
			else if(Ascore<Bscore){
				Btime += ((hour - savehour)*60 + (min-savem));
			}
		}
		if(team==1)
			Ascore++;
		if(team==2)
			Bscore++;
		savehour = hour;
		savem = min;
		if(i==N-1){
			if(Ascore>Bscore){
				Atime += ((48 - savehour)*60 +(-min));
			}
			else if(Ascore<Bscore){
				Btime += ((48 - savehour)*60 +(-min));
			}
		}
	}
	printf("%02d:%02d\n%02d:%02d",Atime/60,Atime%60,Btime/60,Btime%60);
}