[백준] 11723 집합 [java]

Future·2023년 10월 5일
0

백준

목록 보기
6/24

문제

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

풀이

중복을 제거하여 자료를 저장해야 한다 -> set
처음에 시간 초과가 났는데 check일때마다 sout을 찍는 것이 문제가 되었다.
입출력이기 때문에 느리다. 따라서, 이를 해결하기 위해 StringBuilder를 사용하여 값을 저장하였다가 한번에 출력하였다.
++ sout을 반복문을 통해 여러번 출력하게 될 때는 StringBuilder를 사용하자!

코드

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 bufferedReader = new BufferedReader(new InputStreamReader(System.in));
        int n = Integer.parseInt(bufferedReader.readLine());
        String num = "";
        StringBuilder stringBuilder = new StringBuilder();
//
        Set<String> set = new HashSet<>();
//
        while(n-- > 0){
            StringTokenizer stringTokenizer = new StringTokenizer(bufferedReader.readLine());
            String command = stringTokenizer.nextToken();
//
            if(command.equals("add")){
                num = stringTokenizer.nextToken();
                set.add(num);
            }
            else if(command.equals("remove")){
                num = stringTokenizer.nextToken();
                set.remove(num);
            }
            else if(command.equals("check")){
                num = stringTokenizer.nextToken();
                if(set.contains(num)){
                    stringBuilder.append( "1\n");
                }
                else{
                    stringBuilder.append( "0\n");
                }
            }
            else if(command.equals("toggle")){
                num = stringTokenizer.nextToken();
                if(set.contains(num)){
                    set.remove(num);
                }
                else{
                    set.add(num);
                }
            }
            else if(command.equals("all")){
                set.clear();
                for(int i = 0; i < 20; i++){
                    set.add(Integer.toString(i + 1));
                }
            }
            else if(command.equals("empty")){
                set.clear();
            }
        }
//
        System.out.println(stringBuilder.toString());
    }
}
profile
Record What I Learned

0개의 댓글