https://www.acmicpc.net/problem/2480
풀이
더보기
if문 여러개 쓰는거 진짜진짜 싫어서 max로 해결함.
코틀린 배열에는 count가 있어서 조건에 맞는 값을 필터링하여 값을 세주는데, 해당 함수를 이용해 해당 주사위와 일치하는 갯수들을 찾고, 거기서 최댓값이 3인지 2인지 기타인지 찾는다.
만약 3이라면 모두 다 맞는다는 얘기니 10000 + 주사위 첫째 배열 * 1000
만약 2라면 1, 3 주사위 / 2, 3 주사위 / 1, 2 주사위 세 가지 케이스가 생기므로, 맥스 2인 필터링 배열의 인덱스 값을 먼저 찾고, 그 인덱스로 주사위 눈을 구한다. 그리고 그 눈으로 1000 + 100* 눈
어느 케이스에도 속하지 않는 다면 주사위 눈 배열을 max하여 최댓값을 추출한 후, 100 * 최댓값 을 실행한다.
import java.util.Scanner
import kotlin.math.max
fun main(args: Array<String>) {
question2480()
}
fun question2480() {
var sc = Scanner(System.`in`)
var diceList = sc.nextLine().split(" ").map { it.toInt() }
var maxList = Array<Int>(3) {0}
diceList.forEachIndexed { index, i ->
maxList[index] = diceList.count { it == i }
}
if(maxList.max() == 3) {
println(10000 + diceList[0] * 1000)
} else if(maxList.max() == 2) {
println(1000 + diceList[maxList.indexOf(2)] * 100)
} else {
println(diceList.max() * 100)
}
}
반응형
'스터디(beakjoon)' 카테고리의 다른 글
Kotlin] 백준 10950번 문제 풀이 (0) | 2023.04.11 |
---|---|
Kotlin] 백준 2739번 문제 풀이 (0) | 2023.04.11 |
Kotlin] 백준 2525번 문제 풀이 (0) | 2023.04.09 |
Kotlin] 백준 2884번 문제 풀이 (0) | 2023.04.07 |
Kotlin] 백준14681번 문제 풀이 (0) | 2023.04.07 |