[문제]
https://www.acmicpc.net/problem/20291
[풀이]
문자열 문제이지만 문자열 처리 자체는 각 입력의 확장자만 알아내면 되기 때문에 split 함수로 구할 수 있다.
확장자를 키로 하고, 해당 확장자의 입력 횟수를 키의 값으로 해시에 저장하면 구할 수 있지만 사전순으로 출력을 해야하기 때문에 정렬이 가능한 TreeMap을 이용했다.
사전순이기 때문에 정렬에 대한 추가 코드가 필요없지만 내림차순이 필요할 땐 Iterator를 써줘서 찾아 낼 수 있다.
시간복잡도: TreeMap의 삽입과 탐색은 O(logN)이다.
[코드]
import java.util.*
private var n = 0
private lateinit var treeMap: TreeMap<String,Int>
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
n = br.readLine().toInt()
treeMap = TreeMap<String,Int>()
repeat(n){
val (_, extension) = br.readLine().split(".")
val sum = treeMap[extension]
treeMap.set(extension,if(sum == null) 1 else sum + 1)
}
treeMap.forEach {
bw.write("${it.key} ${it.value}\n")
}
bw.flush()
bw.close()
}
'Algorithm and PS > 백준(Kotlin)' 카테고리의 다른 글
백준 - 2961 도영이가 만든 맛있는 음식 (코틀린) (0) | 2022.04.05 |
---|---|
백준 - 14916 거스름돈 (코틀린) (0) | 2022.04.04 |
백준 - 2636 치즈 (코틀린) (0) | 2022.03.29 |
백준 - 2606 바이러스 (코틀린) (0) | 2022.03.29 |
백준 - 2630 색종이 만들기 (코틀린) (0) | 2022.01.13 |
댓글