문제
1431번: 시리얼 번호
첫째 줄에 기타의 개수 N이 주어진다. N은 50보다 작거나 같다. 둘째 줄부터 N개의 줄에 시리얼 번호가 하나씩 주어진다. 시리얼 번호의 길이는 최대 50이고, 알파벳 대문자 또는 숫자로만 이루어
www.acmicpc.net
풀이
시리얼 넘버와 자리수의 합을 포함하는 Guitar 데이터 클래스를 정의하고 Comparable 인터페이스를 구현하여 풀이하였다.
코드
data class Guitar(val serialNumber: String, val digitalSum: Int): Comparable<Guitar> {
override fun compareTo(other: Guitar): Int {
return if(serialNumber.length != other.serialNumber.length) {
serialNumber.length - other.serialNumber.length
} else {
if(digitalSum != other.digitalSum) {
digitalSum - other.digitalSum
} else {
serialNumber.compareTo(other.serialNumber)
}
}
}
}
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val list = mutableListOf<Guitar>()
repeat(br.readLine().toInt()) {
val serial = br.readLine()
var sum = 0 // 자리수의 합
serial.forEach {
if(it.isDigit()) { // 숫자일 경우
sum += it - '0'
}
}
list.add(Guitar(serial, sum))
}
list.sort()
list.forEach {
bw.append("${it.serialNumber}\n")
}
bw.write("")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 2075번: N번째 큰 수 - Kotlin[코틀린] (0) | 2024.01.04 |
---|---|
[백준] 2573번: 빙산 - Kotlin[코틀린] (0) | 2024.01.03 |
[백준] 1138번: 한 줄로 서기 - Kotlin[코틀린] (0) | 2024.01.01 |
[백준] 10826번: 피보나치 수 4 - Kotlin[코틀린] (1) | 2023.12.28 |
[백준] 2578번: 빙고 - Kotlin[코틀린] (0) | 2023.12.27 |