20291
문제
20291
접근
- 문자열을 받으면 split하여 나눈다.
- 확장자만 추출하면 키값으로 저장하고 value를 1 증가한다.
- value는 동일한 키가 들어올 때 증가시킨다.
- key를 중심으로 정렬한다.
가정
- hashmap 자료구조를 만들어 key에는 확장자, value에 중복 갯수를 저장하고 출력한다.
풀어보기
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(bufferedReader.readLine());
Map<String, Integer> map = new HashMap<>();
for(int i = 0; i < N; i++){
String temp = bufferedReader.readLine();
String[] tempArr = temp.split("\\.");
map.put(tempArr[1], map.getOrDefault(tempArr[1], 0) + 1);
}
List<String> keySet = new ArrayList<>(map.keySet());
Collections.sort(keySet);
for(String key : keySet){
System.out.print(key + " ");
System.out.println(map.get(key));
}
}
}
시행착오
- map에는 getOrDefault 메서드가 있어 값이 없을 경우 디폴트 값을 리턴할 수 있다는 것을 알았다.
- map을 정렬하기 위해서는 map을 List화 시키고 List를 Collections 객체로 정렬시켜야 된다.
Collections
Collections