[Java][백준] #7785 - 회사에 있는 사람

배수연·2024년 5월 17일

algorithm

목록 보기
29/45

🔗 백준 7785 - 회사에 있는 사람

문제

알고리즘 분류

  • 자료 구조
  • 해시를 사용한 집합과 맵

풀이

1. 입력(HashMap)

  • 이름-상태라는 Key, Value를 갖는 HashMap생
  • 상태가 enter라면 Map.put(), 아니라면(leave) Map.remove()
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, String>  map = new HashMap<>();
        int n = Integer.parseInt(br.readLine());
        for(int i = 0; i<n; i++ ) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String name = st.nextToken();
            String state = st.nextToken();
            if(state.equals("enter")) {
                map.put(name, state);
            } else {
                map.remove(name);
            }
        }

2. n번부터 m번까지 더하기

  • 회사에 남아있는 사람들을 따로 list에 넣어준 후 사전 역순으로 정렬 및 출력
        ArrayList list = new ArrayList();
        for(Map.Entry entry : map.entrySet()){
            list.add(entry.getKey());
        }
        list.sort(Comparator.reverseOrder());
        for(int i = 0; i<list.size(); i++) {
            System.out.println(list.get(i));
        }

전체 코드

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 br = new BufferedReader(new InputStreamReader(System.in));
        HashMap<String, String>  map = new HashMap<>();
        int n = Integer.parseInt(br.readLine());
        for(int i = 0; i<n; i++ ) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            String name = st.nextToken();
            String state = st.nextToken();
            if(state.equals("enter")) {
                map.put(name, state);
            } else {
                map.remove(name);
            }
        }
        ArrayList list = new ArrayList();
        for(Map.Entry entry : map.entrySet()){
            list.add(entry.getKey());
        }
        list.sort(Comparator.reverseOrder());
        for(int i = 0; i<list.size(); i++) {
            System.out.println(list.get(i));
        }
    }
}

0개의 댓글