문제는 입력으로 문자열을 받은 뒤, 뒤쪽에 있는 확장자만 잘라서 갯수를 세고 출력 시에는 a-z 순서대로 출력해주면 되는 문제가 되겠다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.TreeMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int count = Integer.parseInt(br.readLine());
TreeMap<String, Integer> map = new TreeMap<>();
for (int i = 0; i < count; i++) {
String[] split = br.readLine().split("\\.");
map.merge(split[1], 1, Integer::sum);
}
map.forEach((key, value) -> System.out.println(key + " " + value));
}
}
문제를 풀어보자면 a-z 순으로 오름차순 정렬이 되는 TreeMap을 사용해주면 정렬에 대한 고민을 할 필요가 없고 문자열은 .으로 쪼개준 뒤 동일한 값은 1씩 더해가면서 map에 모두 넣어준 후
입력을 모두 받고 나면, map에서 key와 value를 꺼내주면 자동으로 key 기준 오름차순 정렬되어 순서대로 나오므로 간단하게 해결 가능하다.
Leave a Reply