ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준-11723] 집합 - Java
    공부/백준 2022. 7. 5. 11:45
    728x90

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

     

    11723번: 집합

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

    www.acmicpc.net

    백준 11723번 집합 자바 풀이

    난이도: 실버5

     

     

    HashSet을 이용하여 풀었다.

    add일 경우 set.add(),

    remove일 경우 set.contains()을 통해 들어 있는지 확인한 후, set.remove를 통해 지운다.

    check일 경우, set.contains()을 통해 들어 있는지 확인후, StringBuilder에 추가한다.

    toggle인 경우 set.contains()을 통해 들어 있으면 지우고, 없으면 추가한다.

    all인 경우 1~20까지 반복문을 통해 set.add()를 하여 추가한다.

    empty인 경우 set.clear()를 통해 HashSet을 비운다.

     

    처음에는 check인 경우마다 print를 하였지만 시간 초과가 발생하여,

    StringBuilder를 이용하여 마지막에 출력하였다.

     

    코드

    import java.util.*;
    public class back11723 {
        public static void main(String args[]){
            Scanner scanner= new Scanner(System.in);
            StringBuilder sb=new StringBuilder();
            int m=scanner.nextInt();
            scanner.nextLine();
            HashSet<Integer> set = new HashSet<>();
            for(int i=0;i<m;i++){
                String arr[]=scanner.nextLine().split(" ");
                switch(arr[0]){
                    case "add":
                        set.add(Integer.parseInt(arr[1]));
                        break;
                    case "remove":
                        if(set.contains(Integer.parseInt(arr[1]))){
                            set.remove(Integer.parseInt(arr[1]));
                        }                  
                        break;
                    case "check":
                        if(set.contains(Integer.parseInt(arr[1]))){
                            sb.append(1).append("\n");
                        }else{
                            sb.append(0).append("\n");
                        }
                        break;
                    case "toggle":
                        if(set.contains(Integer.parseInt(arr[1]))){
                            set.remove(Integer.parseInt(arr[1]));
                        }else{
                            set.add(Integer.parseInt(arr[1]));
                        }
                        break;
                    case "all":
                        for(int j=1;j<21;j++){
                            set.add(j);
                        }
                        break;
                    case "empty":
                        set.clear();
                        break;
                }
            }
            System.out.println(sb);
        }
    }
    728x90
    반응형

    '공부 > 백준' 카테고리의 다른 글

    [백준-11726] 2xn 타일링 - Java  (0) 2022.07.13
    [백준-9095] 1, 2, 3 더하기 - Java  (0) 2022.07.12
    [백준-2630] 색종이 만들기 - Java  (0) 2022.07.02
    [백준-2805] 나무 자르기 - Java  (0) 2022.07.01
    [백준-2559] 수열 - Java  (0) 2022.06.30

    댓글

Designed by Tistory.