백준 - 20291 파일 정리

yeongjin·2024년 1월 25일
import java.io.*;
import java.util.*;

public class Main {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringTokenizer st;
    Map<String, Integer> cnt = new HashMap<>();

    void solution() throws Exception {
        int n = Integer.parseInt(br.readLine());
        for (int i = 0; i < n; i++) {
            String str = br.readLine().split("\\.")[1];
            cnt.put(str, cnt.getOrDefault(str, 0) + 1);
        }
        List<String> words = new ArrayList<>(cnt.keySet());
        Collections.sort(words);
        StringBuilder sb = new StringBuilder();
        for (String w : words) {
            sb.append(w + " " + cnt.get(w) + "\n");
        }
        System.out.println(sb);
    }

    public static void main(String[] args) throws Exception {
        new Main().solution();
    }
}

해시를 이용한 간단한 문제였다. 근데 split에 그냥 .을 매개변수로 넣으면 문자 .이 아니라 정규식 기호 .으로 해석하여 .단위로 문자열을 split하지 못했다. 이 때는 정규식 이스케이프 문자 \ \을 앞에 붙여주자.

0개의 댓글