java

백준 7785 자바 회사에 있는 사람 java

MiaCoder 2024. 1. 23. 11:27

역순으로 정렬하는 것이 중요한 문제이다.

 

컬랙션을 사용하여 HashMap를 정렬하는 방법을 알아보았다.

 

TreeMap라는 컬랙션을 이용하면 된다.

 

import java.util.*;
import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        int N = Integer.parseInt(br.readLine());
        //N개를 입력받음
        
        HashMap<String, String> map = new HashMap<>();
        StringTokenizer st;
        //공백을 통한 입력을 위함

        for (int i = 0; i < N; i++) {
            st = new StringTokenizer(br.readLine());
            //HashMap은 공백을 통해 2개 씩 입력받는 것을 N번 반복하기 위해 for문에 생성

            String key = st.nextToken();
            String value = st.nextToken();

            map.put(key, value);
            //HashMap에 넣기
        }

        TreeMap<String, String> rMap = new TreeMap<>(Collections.reverseOrder());
        rMap.putAll(map);
        //TreeMap를 통한 정렬, Collection.reverseOrder()을 통해 역순으로 정렬한다.

        Set<String> keys = rMap.keySet();

        for (String key : keys) {

            if (rMap.get(key).equals("enter")) {
                System.out.println(key);
                // 정렬된 값을 이용해 for-each문에서 value가 "enter"인 값만 출력한다.

            }

        }

        br.close();
    }
}