문제 링크
문제 해설
여러 문자열의 입력이 주어졌을 때 입력된 문자열들의 중복을 제거하고 길이가 짧은순으로 정렬하되, 같은 길이의 문자열은 사전순으로 정렬하는 문제이다. 여러가지 해법이 있겠지만 나의 해결 순서는 다음과 같다.
- 입력받은 문자열을 배열에 저장
- 중복 문자열 제거
- 문자열을 사전순으로 정렬
- 문자열의 길이가 짧은 순으로 정렬
2. 중복 문자열 제거의 경우에는 Set
에 입력받은 문자열을 저장하는 방법도 있지만 나는 배열 객체에 제공되는 distinct()
메소드를 사용했다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val bw = System.out.bufferedWriter()
val n = readLine().toInt()
// distinct()로 중복을 제거하고 sorted()로 사전순 정렬을 한 다음 sortedWith로 길이가 짧은순서로 정렬
val strings = Array(n) { readLine() }.distinct().sorted().sortedWith(compareBy { it.length })
for (s in strings) {
bw.write("$s\n")
}
bw.close()
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 1010 : 다리 놓기 (1) | 2022.11.24 |
---|---|
[Kotlin] 백준 1094 : 막대기 (0) | 2022.11.23 |
[Kotlin] 백준 1308 : D-Day (0) | 2022.11.23 |
[Kotlin] 백준 1251 : 단어 나누기 (0) | 2022.11.23 |
[Kotlin] 백준 1811 : Adjacent Mastermind (0) | 2022.11.22 |
댓글