반응형
백준 1296번 문제입니다. (solved.ac) 기준 브론즈 1 문제입니다.
https://www.acmicpc.net/problem/1296
문제
문제 접근
- L = 연두의 이름과 팀 이름에서 등장하는 L의 개수
- O = 연두의 이름과 팀 이름에서 등장하는 O의 개수
- V = 연두의 이름과 팀 이름에서 등장하는 V의 개수
- E = 연두의 이름과 팀 이름에서 등장하는 E의 개수
((L+O) × (L+V) × (L+E) × (O+V) × (O+E) × (V+E)) mod 100
위의 정보들은 연두의 이름과 팀의 이름을 받아서 우승할 확률을 구하는 공식입니다!
첫 번째 줄에는 연두의 이름을, 두 번째 줄에는 팀 이름 후보의 개수 n이 그 후 n개의 줄에는 팀 후보의 이름이 한 줄에 하나씩 주어집니다. 위의 공식을 이용하여 팀 후보의 이름들 중 우승할 확률이 가장 높은 팀 이름을 출력하면 됩니다.
단, 확률이 같은 팀이 여러가지인 경우 사전 순으로 가장 앞에있는 팀의 우승할 확률이 가장 높다고 합니다.
이 부분을 처리하기 위해서 확률이 동일한 경우 두 문자열을 비교해서 사전순으로 앞에 있는 팀 이름을 출력해줘야 하므로 두 문자열을 list로 만들고 sorted()를 사용하여 정렬 후 0번째 인덱스([0])에 있는 문자열을 출력할 수 있도록 하였습니다.
정답 코드
fun main() {
var lCnt = 0
var oCnt = 0
var vCnt = 0
var eCnt = 0
var maxProbability = 0
var maxProbabilityTeam = ""
var chartreuseName = readln()
chartreuseName.forEach {
when (it) {
'L' -> lCnt++
'O' -> oCnt++
'V' -> vCnt++
'E' -> eCnt++
}
}
val teamCnt = readln().toInt()
repeat(teamCnt) {
var curLCnt = 0
var curOCnt = 0
var curVCnt = 0
var curECnt = 0
val teamName = readln()
teamName.forEach {
when (it) {
'L' -> curLCnt++
'O' -> curOCnt++
'V' -> curVCnt++
'E' -> curECnt++
}
}
val curProbalility =
calProbability((lCnt + curLCnt), (oCnt + curOCnt), (vCnt + curVCnt), (eCnt + curECnt))
if (maxProbability < curProbalility) {
maxProbability = curProbalility
maxProbabilityTeam = teamName
}
if (maxProbability == curProbalility) {
if (maxProbabilityTeam == "") maxProbabilityTeam = teamName
maxProbabilityTeam = listOf(maxProbabilityTeam, teamName).sorted()[0]
}
}
println(maxProbabilityTeam)
}
fun calProbability(lCnt: Int, oCnt: Int, vCnt: Int, eCnt: Int) =
((lCnt + oCnt) * (lCnt + vCnt) * (lCnt + eCnt) * (oCnt + vCnt) * (oCnt + eCnt) * (vCnt + eCnt)) % 100
반응형
'알고리즘 문제풀이[Algorithm]' 카테고리의 다른 글
[백준] 14912번 숫자 빈도수(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.06 |
---|---|
[백준] 2961번 도영이가 만든 맛있는 음식(완전탐색 - DFS)[Kotlin - 코틀린] (0) | 2022.07.06 |
[백준] 2160번 그림 비교(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.06 |
[백준] 2635번 수 이어가기(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.06 |
[백준] 1476번 날짜 계산(브루트포스 - 완전탐색)[Kotlin - 코틀린] (0) | 2022.07.05 |
최근댓글