문제 출처 : https://www.acmicpc.net/problem/27522
언어 : Kotlin
문제 설명 :
카트라이더: 드리프트 는 2023년 1월 12일에 출시한 넥슨의 캐주얼 레이싱 게임으로, 2004년에 출시하여 18년간 서비스한 크레이지레이싱 카트라이더 의 후속작이다. PC-콘솔-모바일의 크로스 플랫폼 플레이를 지원하며, 커스터마이징을 통해 나만의 카트바디와 개성 있는 캐릭터를 사용할 수 있는 것이 특징이다. 특히 기존 카트라이더 의 게임성을 계승하면서 더욱 뛰어난 그래픽을 자랑한다는 점에서 많은 관심을 받고 있다.
카트라이더: 드리프트 에는 크게 아이템전과 스피드전의 두 가지 모드가 있다. 아이템전은 다양한 아이템을 사용할 수 있는 모드로, 팀의 협동을 통한 전략적 플레이가 핵심이다. 반면 스피드전은 드리프트를 통해 부스터를 모아 사용하는 모드로, 짜릿한 속도감을 즐길 수 있다.
당신은 스피드전 스쿼드의 승리 팀을 구하는 임무를 맡았다. 스쿼드는 레드팀 4명과 블루팀 4명으로 이루어진 8명의 레이서가 플레이하는 모드이다. 또한 스피드전에서는 각 팀원의 순위 점수의 합계가 높은 팀이 승리하며, 만일 합계가 같다면 최고 순위가 가장 높은 팀이 승리한다. 참고로 아래 순위 점수표를 확인해보면, 8명의 레이서가 모두 서로 다른 시각에 완주한 경우 순위 점수의 합계가 반드시 다르다.
원래 1위 레이서가 완주한 순간부터 10초가 지나기 전에 완주하지 못하면 리타이어되지만, 이 문제에서는 모든 레이서의 실력이 뛰어나기 때문에 아무도 리타이어하지 않는다. 또한 모든 레이서가 반드시 서로 다른 시각에 완주한다. 스피드전 스쿼드에 참가한 8명의 레이서에 대해 완주 기록과 속한 팀이 주어졌을 때, 아래 순위 점수표를 참고하여 승리팀이 어디인지 판단해보자.
순위 | 1st | 2nd | 3rd | 4th | 5th | 6th | 7th | 8th | Retire |
점수 | 10 | 8 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
입력 :
첫째 줄부터 8개의 줄에 걸쳐 한 줄에 한 명씩 각 레이서의 완주 기록과 속한 팀이 공백을 사이에 두고 주어진다.
- 레이서의 완주 기록은 M:SS:sss와 같은 형식으로 주어진다.
- 분(M)은 0 이상 9 이하의 정수, 초(SS)는 0 이상 59 이하의 정수, 밀리초(sss)는 0 이상 999 이하의 정수로 자릿수가 부족한 경우 앞에 0을 붙여 나타낸다.
- 모든 레이서는 0:00:001 이상 9:59:999 이하의 서로 다른 시각에 완주한다. 리타이어가 발생하지 않는 입력만 주어진다.
- 레이서가 속한 팀은 레드팀인 경우 R, 블루팀인 경우 B로 주어진다.
출력 :
레드팀이 승리하였다면 Red를, 블루팀이 승리하였다면 Blue를 출력한다.
제한 사항 :
- 시간 제한 : 1초 (추가 시간 없음)
- 메모리 제한 : 1024MB (추가 메모리 없음)
입출력 예 :
입력 | 출력 |
1:52:682 B 1:50:201 R 1:49:003 B 1:49:735 B 1:50:257 R 1:51:134 R 1:49:236 R 1:53:932 B |
Red |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
data class Record(val m: Int, val s: Int, val sss: Int, val team: String)
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val score = IntArray(2)
val list = MutableList(8) {
val (time, cur) = readLine().split(" ").map { it }
val (m, s, sss) = time.split(":").map { it.toInt() }
Record(m, s, sss, cur)
}.sortedWith(compareBy<Record> { it.m }.thenBy { it.s }.thenBy { it.sss })
list.forEachIndexed { index, record ->
if (record.team == "R") score[0] += addScore(index) else score[1] += addScore(index)
}
bw.write(if (score[0] > score[1]) "Red" else "Blue")
bw.flush()
bw.close()
}
fun addScore(index: Int): Int {
return when (index) {
0 -> 10
1 -> 8
2 -> 6
3 -> 5
4 -> 4
5 -> 3
6 -> 2
7 -> 1
8 -> 0
else -> -99
}
}
'백준 > 문제' 카테고리의 다른 글
1942번: 디지털시계 (0) | 2024.06.12 |
---|---|
16113번: 시그널 (0) | 2024.06.12 |
17214번: 다항 함수의 적분 (0) | 2024.06.11 |
3486번: Adding Reversed Numbers (0) | 2024.06.11 |
2179번: 비슷한 단어 (0) | 2024.06.11 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!