.을 기준으로 확장자만 추출한다 (StringTokenizer 사용).value + 1value = 1즉, "파일명 파싱 → 확장자 카운팅 → 정렬된 출력" 과정을 수행한다.
이 문제는 확장자별 빈도수 집계 + 사전순 출력이 필요하다.
HashMap으로는 정렬이 안 되지만, TreeMap(Red-Black Tree 기반)은:
주요 메서드:
containsKey(): 키 존재 여부 확인get(): value 조회 put(): 키-값 저장/업데이트입력: n=8, 파일명들: prolific.txt, accraz.spc, sbrus.txt, spc.spc
| 단계 | 파일명 | 확장자 | TreeMap 상태 |
|---|---|---|---|
| 1 | prolific.txt | txt | {txt=1} |
| 2 | accraz.spc | spc | {spc=1, txt=1} |
| 3 | sbrus.txt | txt | {spc=1, txt=2} |
| 4 | spc.spc | spc | {spc=2, txt=2} |
최종 출력: {spc=2, txt=2}
TreeMap.entrySet() 순회.import java.io.*;
import java.util.*;
public class S20291 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
Map<String, Integer> fileMap = new TreeMap<>();
for (int i = 0; i < n; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), ".");
StringTokenizer st = new StringTokenizer(br.readLine(), ".");
String file_name = st.nextToken(); // 파일명은 무시
String file_extension = st.nextToken(); // 확장자만 담고 있는 상태
if (file_map.containsKey(file_extension)) {
file_map.put(file_extension, file_map.get(file_extension) + 1);
} else {
file_map.put(file_extension, 1);
}+ 1);
}
for (String a : file_map.keySet()) {
System.out.println(a + " " + file_map.get(a));
}
}
}
마지막 출력 형식 아래의 방식도 학습 필요함