• 문제 링크
20291번: 파일 정리
친구로부터 노트북을 중고로 산 스브러스는 노트북을 켜자마자 경악할 수밖에 없었다. 바탕화면에 온갖 파일들이 정리도 안 된 채 가득했기 때문이다. 그리고 화면의 구석에서 친구의 메시지를
www.acmicpc.net
• 풀이 과정
입력받은 파일명을 "." 구분자로 분리할 split 함수에서 "." 을 인식하기 위해,
정규표현식에 따라 "[.]" 또는 "\\." 으로 구분자를 지정한다.
이후 Map의 성질과 getOrDefault 함수를 활용하여 입력받은 확장자 파일의 개수를 저장하고,
key 값인 확장자 명으로 정렬하여 확장자명과 해당 개수를 출력한다
• 풀이 코드
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int n = Integer.parseInt(br.readLine());
Map<String, Integer> map = new HashMap<>();
while (n-- > 0) {
String ext = br.readLine().split("[.]")[1];
map.put(ext, map.getOrDefault(ext, 0) + 1);
}
List<String> list = new ArrayList<>(map.keySet());
Collections.sort(list);
StringBuilder sb = new StringBuilder();
for (String key : list) {
sb.append(key).append(" ").append(map.get(key)).append("\n");
}
bw.write(sb.toString());
bw.flush();
}
}
'Problem Solving > Baekjoon' 카테고리의 다른 글
[백준] 2002 추월 - Data Structure / Java (0) | 2023.03.13 |
---|---|
[백준] 13414 수강신청 - Data Structure / Java (0) | 2023.03.12 |
[백준] 2910 빈도 정렬 - Data Structure / Java (0) | 2023.03.10 |
[백준] 1822 차집합 - Data Structure / Java (0) | 2023.03.09 |
[백준] 15723 n단 논법 - Graph Theory / Java (0) | 2023.03.08 |
댓글