반응형

백준 20291번 문제입니다. (solved.ac) 기준 실버 3 문제입니다.

https://www.acmicpc.net/problem/20291

 

20291번: 파일 정리

친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를

www.acmicpc.net

문제

문제 접근

Key, Value 쌍으로 값을 저장하는 Map 자료구조, 그중에서 읽기와 쓰기를 같이할 수 있는 MutableMap을 사용하였습니다. 키는 확장자 명을 저장할 것 이기 때문에 String, 값은 해당 확장자가 입력된 횟수를 저장할 것이기 때문에 Int를 사용하였습니다.

입력은 sbrus.txt와 같이 주어지는데 문제에서 요구하는 것은 확장자만 필요하기 때문에 .을 기준으로 나눈 후 확장자인 뒷부분만(readln().split(".")[1]) 사용합니다.

Map 자료구조의 containsKey()함수를 사용하여 입력받은 확장자가 key값으로 존재하는지 확인한 후 존재한다면 해당 키의 값을 +1 증가시켜주고 그렇지 않다면 해당 확장자명을 key로 새롭게 MutableMap에 1이라는 value와 넣어주었습니다.

마지막으로 출력 형식에 맞도록 사전순으로 정렬 후 forEach문을 사용하여 출력하였습니다.

정답 코드

fun main(){

    val extentionList = mutableMapOf<String, Int>()
    repeat(readln().toInt()){

        val extension = readln().split(".")[1]

        if (extentionList.containsKey(extension)){
            extentionList[extension] = extentionList[extension]!! + 1
        } else {
            extentionList.put(extension, 1)
        }
    }

    extentionList.toSortedMap().forEach{
        println("${it.key} ${it.value}")
    }

}
반응형
  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기