[백준, JAVA] 20291번 : 파일정리

seunguk noh·2023년 7월 27일
0

Algorithm

목록 보기
10/23

1. 문제

2. 아이디어

  • 확장자의 종류(txt, jpg, etc..)와 길이가 다양하다. 따라서 '.'을 기준으로 SubString을 사용해야겠다.

  • 처음에는 배열을 활용해서 정렬을 하려 했으나, 확장자 별 숫자를 count 하기 위해서는 map이 더욱 적합하다.

3. 코드

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)));
        }
	}
}

4. 느낀점

  • 문자열의 인덱스가 아니라 '.'과 같이 특정 문자를 기준으로 자르는 연습을 해보았다.

  • map을 활용하여 값을 넣고, keySet을 활용하여 key 값을 얻는 방식을 익혔다.

0개의 댓글