Park DJ
dj0998
Park DJ
전체 방문자
오늘
어제
  • 분류 전체보기 (363)
    • 백준 (363)

공지사항

인기 글

태그

  • 백준 7567
  • 백준 4659
  • 백준 2343
  • 백준
  • 백준 15961
  • 백준 16194
  • 자바
  • 백준 16926
  • 백준 14582
  • 백준 2467
  • 백준 7662
  • 백준 10709
  • 백준 1064
  • 백준 2225
  • 백준 3135
  • Java
  • 백준 1747
  • 백준 1495
  • 백준 24039
  • 백준 1531
  • 백준 3049
  • 백준 1011
  • 백준 6550
  • 백준 15312
  • 백준 12605
  • 백준 8892
  • 백준 1914
  • 백준 15655
  • 백준 2591
  • 백준 12871
hELLO · Designed By 정상우.
Park DJ

dj0998

백준 7785 회사에 있는 사람(Java)
백준

백준 7785 회사에 있는 사람(Java)

2023. 1. 22. 20:17

https://www.acmicpc.net/problem/7785

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net


 

해석 및 팁

 


 

이 문제를 풀 때 바로 Arrays.list를 사용하면 시간초과가 발생합니다. 또한 중복도 존재하지 않으므로 Hash.set을 통해 입력받은 후 Array.list로 정렬한 후에 StringBuilder에 저장해서 출력하면 됩니다.

 


 

Java 코드

 


import java.util.Scanner;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Collections;

public class Main {
  public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    StringBuilder sb = new StringBuilder();
    HashSet<String> set = new HashSet<>();
    
    int n = sc.nextInt();
    
    for(int i = 0; i < n; i++) {
      String name = sc.next();
      String check = sc.next();
      if(check.equals("enter")) set.add(name);
      else set.remove(name);
    }

    ArrayList<String> list = new ArrayList<>(set);

    Collections.sort(list, Collections.reverseOrder());

    for(int i = 0; i < list.size(); i++) sb.append(list.get(i)+"\n");
    
    System.out.println(sb);
  }
}

'백준' 카테고리의 다른 글

백준 8979 올림픽(Java)  (0) 2023.01.22
백준 2161 카드 1(Java)  (0) 2023.01.22
백준 2822 점수 계산(Java)  (0) 2023.01.22
백준 10867 중복 빼고 정렬하기(Java)  (0) 2023.01.22
백준 2740 행렬 곱셈(Java)  (1) 2023.01.22
    '백준' 카테고리의 다른 글
    • 백준 8979 올림픽(Java)
    • 백준 2161 카드 1(Java)
    • 백준 2822 점수 계산(Java)
    • 백준 10867 중복 빼고 정렬하기(Java)
    Park DJ
    Park DJ

    티스토리툴바