반응형
```
백준 27522번 팀순위정하기 Kotlin 구현해 보기
```
이번 글을 통해 배워갈 내용
- 백준 27522번 풀이
https://www.acmicpc.net/problem/27522
백준 27522번 카트라이더: 드리프트는
난이도 브론즈 등급의 문제로서
선수들의 결괏값이 있을 때
주어진 조건에 따라서
팀순위를 정해주면 되는 문제입니다.
30분 정도 위에 링크를 방문하셔서 풀어보시고
안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.
순서정렬을 정석대로 숫자로 나눠서 정렬해 주는 게 좋지만
시간관계상 string비교를 하였습니다.
팀이 여러 개 있을경우를 대비해 확장성있게 total 값을 여러개 구해서 비교해 주는 게 좋지만
시간관계상 음수와 양수로 처리하였습니다.
fun main() {
val inputDto = getInput()
print(solution(inputDto))
}
fun getInput(): InputDto {
var racingRecords: MutableList<RacingRecord> = ArrayList()
for (i in 1..8) {
val inputs = readln().split(" ")
racingRecords.add(RacingRecord(time = inputs[0], team = inputs[1]))
}
return InputDto(
racingRecords = racingRecords
)
}
const val BLUE_TEAM = "B"
const val BLUE_TEAM_NAME = "Blue"
const val RED_TEAM_NAME = "Red"
data class RacingRecord(
var time: String,
var team: String
)
data class InputDto(
var racingRecords: List<RacingRecord>
) {
fun findWinningTeam(): String {
val sortedRecords = racingRecords.sortedBy { it.time }
val total = sortedRecords.foldIndexed(0) { idx, total, it ->
val score = findScore(idx + 1)
if (it.team == BLUE_TEAM) {
total - score
} else {
total + score
}
}
return if (total < 0) {
return BLUE_TEAM_NAME
} else {
if (total == 0) {
if (sortedRecords[0].team == BLUE_TEAM) {
return BLUE_TEAM_NAME
}
}
return RED_TEAM_NAME
}
}
private fun findScore(idx: Int): Int {
return when (idx) {
1 -> 10
2 -> 8
3 -> 6
4 -> 5
5 -> 4
6 -> 3
7 -> 2
8 -> 1
else -> 0
}
}
}
fun solution(dto: InputDto): String {
return dto.findWinningTeam()
}
// https://codemasterkimc.tistory.com/
읽어주셔서 감사합니다
무엇인가 얻어가셨기를 바라며
오늘도 즐거운 코딩 하시길 바랍니다 ~ :)
반응형
'Kotlin > Kotlin 알고리즘' 카테고리의 다른 글
백준 27433번 팩토리얼 2 Kotlin 구현해보기 (0) | 2023.09.12 |
---|---|
백준 18258번 큐 2 Kotlin 구현해보기 (0) | 2023.09.09 |
백준 27908번 Kalendar Kotlin 구현해보기 (0) | 2023.04.22 |
백준 2110번 공유기 설치 Kotlin 구현해보기 (0) | 2023.03.17 |
백준 2470번 두 용액 Kotlin 구현해보기 (0) | 2023.03.15 |