백준 11723 집합

·2022년 2월 14일
0

문제

비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오.

  • add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다.

  • remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다.
  • check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20)
  • toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
  • all: S를 {1, 2, ..., 20} 으로 바꾼다.
  • empty: S를 공집합으로 바꾼다.

코드

import java.io.*;
import java.util.*;

class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(System.out));

        int n=Integer.parseInt(br.readLine());
        Set<Integer> set=new LinkedHashSet<>();
        while(n-->0){
            String s=br.readLine();
            StringTokenizer st=new StringTokenizer(s);
            switch (st.nextToken()){
                case "add":
                    set.add(Integer.parseInt(st.nextToken()));
                    break;
                case "remove":
                    set.remove(Integer.parseInt(st.nextToken()));
                    break;
                case "check":
                    if(set.contains(Integer.parseInt(st.nextToken())))
                        bw.write("1\n");
                    else
                        bw.write("0\n");
                    break;
                case "toggle":
                    int temp=Integer.parseInt(st.nextToken());
                    if(set.contains(temp))
                        set.remove(temp);
                    else
                        set.add(temp);
                    break;
                case "all":
                    for(int i=0; i<20; i++)
                        set.add(i+1);
                    break;
                case "empty":
                    set.clear();
            }
        }

        bw.flush();
    }
}

해결 과정

  1. JAVASet클래스를 사용해봤다. HashSet, LinkedHashSet, TreeSet 등이 있는데 이번에는 값의 저장 순서를 유지하는 LinkedHashSet을 사용했다. 각각의 경우를 switch문을 사용해서 LinkedHashSet 메소드로 처리했다.

  2. 😁

profile
渽晛

0개의 댓글