백준온라인

[백준온라인] 2852번 NBA 농구

cbkpar 2021. 7. 25. 00:00

문제 : https://www.acmicpc.net/problem/2852

 

2852번: NBA 농구

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

www.acmicpc.net

문제 요약 : 1번 팀과 2번 팀이 이기고 있던 시간 출력

입력 출력
1 ≤ N(득점 정보) ≤ 100
0 ≤ M(분) ≤ 47
0 ≤ S(초) ≤ 59
1번 팀과 2번 팀이 이기고 있던 시간 출력(MM:SS)

JAVA

소스코드 : https://github.com/cbkpar/BOJ/blob/main/boj_2852.java

채점 번호 아이디 문제 번호 결과 메모리 시간 언어 코드 길이
31063115 cbkpar 2852 맞았습니다!! 14416KB 132ms Java 11 937B
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

public class Main {
	
	public static void main(String args[]) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int t,ntime,time,t_a,t_b,s;
		boolean chk;
		s = time = t_a = t_b = 0;
		t = Integer.parseInt(br.readLine());
		while(t-->0) {
			StringTokenizer st = new StringTokenizer(br.readLine());
			chk = st.nextToken().equals("1")?true:false;
			String str = st.nextToken();
			ntime = (str.charAt(0)-'0')*600;
			ntime += (str.charAt(1)-'0')*60;
			ntime += (str.charAt(3)-'0')*10;
			ntime += str.charAt(4)-'0';
			if(s>0) t_a += ntime - time;
			if(s<0) t_b += ntime - time;
			s += chk?1:-1;
			time = ntime;
		}
		if(s>0) t_a += 2880 - time;
		if(s<0) t_b += 2880 - time;
		System.out.printf("%02d:%02d\n%02d:%02d\n",t_a/60,t_a%60,t_b/60,t_b%60);
	}
}

시간을 0으로 초기화 한 후

주어진 득점에 대한 시간을 초로 환산하고

특정 팀이 이기고 있을 경우 현재시간과 시간의 차이 만큼 더해주고

득점을 계산 한 후 시간을 현재시간으로 치환 시켜준 뒤

마지막에 48분의 경우 따로 득점은 없지만 특정 팀이 이기고 있을 경우 시간을 더해준다.

 

예제 )

3

1 01:10

2 21:10

2 31:30