알고리즘 스터디 - 1주차 3

이강민·2024년 7월 20일
0

커널360

목록 보기
9/56
post-thumbnail

20291

  • 알고리즘 : 문자열, 해쉬
  • 난이도 : 실버3

문제

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);
        }
        // 맵 결과를 정렬
        //1. keyset
        //2. keyset으로 정렬
        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

profile
AllTimeDevelop

0개의 댓글

관련 채용 정보