문제 링크
문제 해설
주어진 문자열들을 민식어의 순서에 맞게 정렬해야한다. 주어진 민식어 단어들을 사전순으로 정렬하기 위해 아래와 같이 민식어 단어의 모든 알파벳을 대응하는 순서의 영어 알파벳으로 치환하는 메소드를 작성한다. 이 때, n과 g가 붙어있는 ng의 경우는 무조건 하나의 알파벳으로 생각한다는 조건이 있기 때문에 ng를 가장 먼저 치환한다.
private fun String.toMinsik() = this.replace("ng", "L")
.replace("a", "A")
.replace("b", "B")
.replace("k", "C")
.replace("d", "D")
.replace("e", "E")
.replace("g", "F")
.replace("h", "G")
.replace("i", "H")
.replace("l", "I")
.replace("m", "J")
.replace("n", "K")
.replace("o", "M")
.replace("p", "N")
.replace("r", "O")
.replace("s", "P")
.replace("t", "Q")
.replace("u", "R")
.replace("w", "S")
.replace("y", "T")
이후에는 입력으로 주어지는 민식어 단어들을 TreeMap에 (key : 치환한 민식어 단어, value : 민식어 단어)로 저장한 후, 모든 value를 출력하면 된다.
Code
import java.util.TreeMap
fun main() = with(System.`in`.bufferedReader()) {
val bw = System.out.bufferedWriter()
TreeMap<String, String>().also { map ->
repeat(readLine().toInt()) {
val str = readLine()
map[str.toMinsik()] = str
}
map.forEach { bw.write("${it.value}\n") }
}
bw.close()
}
private fun String.toMinsik() = this.replace("ng", "L")
.replace("a", "A")
.replace("b", "B")
.replace("k", "C")
.replace("d", "D")
.replace("e", "E")
.replace("g", "F")
.replace("h", "G")
.replace("i", "H")
.replace("l", "I")
.replace("m", "J")
.replace("n", "K")
.replace("o", "M")
.replace("p", "N")
.replace("r", "O")
.replace("s", "P")
.replace("t", "Q")
.replace("u", "R")
.replace("w", "S")
.replace("y", "T")
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 17830 : 이진수씨의 하루 일과 (0) | 2023.03.21 |
---|---|
[Kotlin] 백준 23757 : 아이들과 선물 상자 (0) | 2023.03.20 |
[Kotlin] 백준 12871 : 무한 문자열 (0) | 2023.03.15 |
[Kotlin] 백준 1354 : 무한 수열 2 (0) | 2023.03.11 |
[Kotlin] 백준 16499 : 동일한 단어 그룹화하기 (0) | 2023.03.10 |
댓글