[문제]
https://www.acmicpc.net/problem/20291
20291번: 파일 정리
친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를
www.acmicpc.net
[풀이]
문자열 문제이지만 문자열 처리 자체는 각 입력의 확장자만 알아내면 되기 때문에 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 |
댓글