확장자의 종류(txt, jpg, etc..)와 길이가 다양하다. 따라서 '.'을 기준으로 SubString을 사용해야겠다.
처음에는 배열을 활용해서 정렬을 하려 했으나, 확장자 별 숫자를 count 하기 위해서는 map이 더욱 적합하다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.StringTokenizer;
public class BOJ_3_20291 {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine());
int N = Integer.parseInt(st.nextToken());
Map<String, Integer> map = new HashMap<>();
for(int i=0; i<N; i++) {
String name = bf.readLine();
String file = name.substring(name.indexOf(".")+1);
map.put(file, map.getOrDefault(file, 0)+1);
}
Set<String> strings = map.keySet();
List<String> list = new ArrayList<>(strings);
Collections.sort(list);
for(int i=0; i<list.size(); i++){
System.out.println(list.get(i)+" "+map.get(list.get(i)));
}
}
}
문자열의 인덱스가 아니라 '.'과 같이 특정 문자를 기준으로 자르는 연습을 해보았다.
map을 활용하여 값을 넣고, keySet을 활용하여 key 값을 얻는 방식을 익혔다.