# BOJ07785 회사에 있는 사람

https://www.acmicpc.net/problem/7785 (opens new window)

상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다.

각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다.

상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구한다.

# HashSet

HashSet을 활용하여 현재 회사에 남아있는 사람을 구한다.

HashSet<String> hashSet = new HashSet<>();
for (int i = 0; i < n; i++) {
    String name = scanner.next();
    String command = scanner.next();

    if (hashSet.contains(name) && command.equals("leave")) {
        hashSet.remove(name);
    } else {
        hashSet.add(name);
    }
}

# 제출 코드

아래는 최종 제출 코드이다.

import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashSet;
import java.util.List;
import java.util.Scanner;

public class BOJ7785 {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        int n = scanner.nextInt();

        HashSet<String> hashSet = new HashSet<>();
        for (int i = 0; i < n; i++) {
            String name = scanner.next();
            String command = scanner.next();

            if (hashSet.contains(name) && command.equals("leave")) {
                hashSet.remove(name);
            } else {
                hashSet.add(name);
            }
        }

        List<String> list = new ArrayList<>(hashSet);
        list.sort(Comparator.reverseOrder());

        StringBuilder stringBuilder = new StringBuilder();
        for (String name : list) {
            stringBuilder.append(name).append("\n");
        }

        System.out.println(stringBuilder);
    }
}
#BOJ #자료 구조 #해시를 사용한 집합과 맵
last updated: 11/17/2021, 2:42:26 PM