2852번: NBA 농구백준/문제2024. 2. 22. 16:43
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/2852
언어 : Kotlin
문제 설명 :
동혁이는 NBA 농구 경기를 즐겨 본다. 동혁이는 골이 들어갈 때 마다 골이 들어간 시간과 팀을 적는 이상한 취미를 가지고 있다.
농구 경기는 정확히 48분동안 진행된다. 각 팀이 몇 분동안 이기고 있었는지 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 골이 들어간 횟수 N(1<=N<=100)이 주어진다. 둘째 줄부터 N개의 줄에 득점 정보가 주어진다. 득점 정보는 득점한 팀의 번호와 득점한 시간으로 이루어져 있다. 팀 번호는 1 또는 2이다. 득점한 시간은 MM:SS(분:초) 형식이며, 분과 초가 한자리 일 경우 첫째자리가 0이다. 분은 0보다 크거나 같고, 47보다 작거나 같으며, 초는 0보다 크거나 같고, 59보다 작거나 같다. 득점 시간이 겹치는 경우는 없다.
출력 :
첫째 줄에 1번 팀이 이기고 있던 시간, 둘째 줄에 2번 팀이 이기고 있던 시간을 출력한다. 시간은 입력과 같은 형식(MM:SS)으로 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
1 1 20:00 |
28:00 00:00 |
3 1 01:10 2 21:10 2 31:30 |
20:00 16:30 |
5 1 01:10 1 02:20 2 45:30 2 46:40 2 47:50 |
45:30 00:10 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
var s = 0
var check: Boolean
val time = IntArray(4) { 0 }
val toSecond = intArrayOf(600, 60, 0, 10, 1)
val n = readLine().toInt()
repeat(n) {
val (team, goal) = readLine().split(" ")
check = team == "1"
for (i in 0 .. 4) {
if (goal[i] == ':') continue
time[3] += goal[i].digitToInt() * toSecond[i]
}
if (s > 0) time[1] += time[3] - time[0]
if (s < 0) time[2] += time[3] - time[0]
s += if (check) 1 else -1
time[0] = time[3]
time[3] = 0
}
if (s > 0) time[1] += 2880 - time[0]
if (s < 0) time[2] += 2880 - time[0]
bw.write(String.format("%02d:%02d\n%02d:%02d", time[1] / 60, time[1] % 60, time[2] / 60, time[2] % 60))
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
14405번: 피카츄 (1) | 2024.02.26 |
---|---|
2671번: 잠수함식별 (1) | 2024.02.26 |
1235번: 학생 번호 (0) | 2024.02.21 |
5789번: 한다 안한다 (0) | 2024.02.21 |
4889번: 안정적인 문자열 (0) | 2024.02.21 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!