본문 바로가기
Blog/Education

99클럽 코테 스터디 12일차 TIL + Set

by 코젼 2024. 4. 5.
728x90
반응형

백준

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

 

11723번: 집합

첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.

www.acmicpc.net

 


- 오늘의 학습 키워드 : Set

- 공부한 내용 본인의 언어로 정리하기

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;

public class Main {
  public static void main(String[] args) throws IOException {
    BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    StringBuilder sb = new StringBuilder();
    StringTokenizer st;

    int M = Integer.parseInt(br.readLine());
    Set<Integer> set = new HashSet<>();

    for (int i=0; i<M; i++) {
      st = new StringTokenizer(br.readLine());
      String operator = st.nextToken();

      switch (operator) {
        case "add":
          set.add(Integer.parseInt(st.nextToken()));
          break;
        case "remove":
          if (!set.isEmpty()) set.remove(Integer.parseInt(st.nextToken()));
          break;
        case "check":
          if (set.contains(Integer.parseInt(st.nextToken()))) sb.append("1").append("\n");
          else sb.append("0").append("\n");
          break;
        case "toggle":
          int num = Integer.parseInt(st.nextToken());
          if (set.contains(num)) set.remove(num);
          else set.add(num);
          break;
        case "all":
          set.clear();
          for (int j=1; j<=20; j++) set.add(j);
          break;
        case "empty":
          set.clear();
          break;
      }
    }
    System.out.println(sb);
  }
}

- 오늘의 회고 : System.out.prinln으로 단순히 출력했을 때 처음에 시간초과가 나와서 StringBuilder로 append해서 출력하니까 시간초과없이 풀 수 있었다.
Set 객체가 가진 메서드에 대해서 복습할 수 있는 문제였다.


99클럽 1기를 수강하면서 작성한 글입니다.

https://99club.oopy.io/

 

99클럽-1기 모집 중

현직 개발자와 함께하는 코테 스터디

99club.oopy.io

 

728x90
반응형

댓글