← Back to List

2852번: NBA 농구 ↗

Solutions

Go
1.5 KB | 1506 chars
package main

import (
	"bufio"
	"fmt"
	"os"
)

var writer *bufio.Writer
var reader *bufio.Reader

func print(a ...interface{}) {
	fmt.Fprintln(writer, a...)
}

func mm_ss_to_int(time string) int {
	minute := int(time[0]-'0')*10 + int(time[1]-'0')
	second := int(time[3]-'0')*10 + int(time[4]-'0')

	return minute*60 + second
}

func int_to_mm_ss(time int) string {
	minute := time / 60
	second := time % 60

	return fmt.Sprintf("%02d:%02d", minute, second)
}

func readInt() int {
	var n int
	fmt.Fscanf(reader, "%d\n", &n)
	return n
}

func solve() {
	n := readInt()

	goal_team_numbers := make([]int, n)
	goal_times := make([]string, n+1) // 마지막 골은 실제 골이 아니라, 경기 종료 시간

	goal_influence_time := make([]int, n)
	influence_time := make([]int, 2)

	for i := 0; i < n; i++ {
		fmt.Fscanf(reader, "%d %s\n", &goal_team_numbers[i], &goal_times[i])
		goal_team_numbers[i]--
	}

	goal_times[n] = "48:00"

	for i := 0; i < n; i++ {
		goal_influence_time[i] = mm_ss_to_int(goal_times[i+1]) - mm_ss_to_int(goal_times[i])
	}

	score := [2]int{0, 0}

	for i := 0; i < n; i++ {
		team := goal_team_numbers[i]

		score[team]++

		if score[team] > score[1-team] {
			influence_time[team] += goal_influence_time[i]
		} else if score[team] < score[1-team] {
			influence_time[1-team] += goal_influence_time[i]
		}
	}

	print(int_to_mm_ss(influence_time[0]))
	print(int_to_mm_ss(influence_time[1]))
}

func main() {
	writer = bufio.NewWriter(os.Stdout)
	reader = bufio.NewReader(os.Stdin)
	defer writer.Flush()

	solve()
}