백준온라인
[백준온라인] 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