알고리즘

백준 2852번 NBA농구 (JAVA)

박카스마시며코딩 2023. 10. 12. 23:31

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

 

2852번: NBA 농구

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

www.acmicpc.net

 

저는 구현을 통해 문제를 해결하였습니다.

골을 넣으면 해당 스코어를 증가시키고, 다음 골의 시간과의 차이 만큼 해당 팀에 시간을 추가해 주어 문제를 해결하였습니다. 구현의 편의성을 위해 0~n까지 for문을 돌리고 , n일때는 마지막 시간인 48분이 되도록 하여 풀었습니다.

 

package BOJ.etc;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
import java.util.function.Function;

public class BOJ_2852 {
    private static final int LAST_TIME = 60 * 48;
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Function<String,Integer> stoi = Integer::parseInt;
        int n = stoi.apply(br.readLine());
        int[] score = new int[3];
        int[] totalTime = new int[3];
        int prevTime = 0;
        for(int i = 0 ; i <= n ; i++){
            int min = LAST_TIME;
            int team = 1;
            if(i != n){
                StringTokenizer st = new StringTokenizer(br.readLine());
                team = stoi.apply(st.nextToken());
                String time = st.nextToken();
                min = 60 * stoi.apply(time.split(":")[0]);
                min += stoi.apply(time.split(":")[1]);
            }
            if(score[1] < score[2]){
                totalTime[2] += min - prevTime;
            }
            if(score[1] > score[2]){
                totalTime[1] += min - prevTime;
            }
            score[team]++;
            prevTime = min;
        }
        System.out.println(minToString(totalTime[1]));
        System.out.println(minToString(totalTime[2]));
    }
    private static String minToString(int time){
        StringBuilder sb = new StringBuilder();
        int hour = time / 60;
        if(hour < 10){
            sb.append("0");
        }
        sb.append(hour+":");
        int min = time % 60;
        if(min < 10){
            sb.append("0");
        }
        sb.append(min);
        return sb.toString();
    }
}