코딩문제풀이/Baekjoon

[Java] 백준 20291번 : 파일

코딩하는 포메라니안 2023. 6. 7. 23:54

문제

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

 

20291번: 파일 정리

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

www.acmicpc.net

 

 

풀이 과정

TreeMap은 내부적으로 레드-블랙 트리 구조를 갖추고 있어, 정렬한 자료가 필요할 때 유용하다.

따로 key를 복사해서 정렬하지 않고, 값을 넣으면서 Entry자체를 정렬하는 것이다.

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Map;
import java.util.TreeMap;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        Map<String, Integer> map = new TreeMap<>();
        StringBuilder sb = new StringBuilder();
        int N = Integer.parseInt(br.readLine());
        String input;
        while(N-- > 0){
            input = br.readLine();
            String extension = input.substring(input.indexOf(".")+1);
            map.put(extension, map.getOrDefault(extension, 0)+1);
        }

        for(Map.Entry<String, Integer> entry : map.entrySet()){
            sb.append(entry.getKey()).append(" ")
                    .append(entry.getValue()).append("\n");
        }
        System.out.println(sb);
    }
}