알고리즘/백준

11723번 - 집합

fleur75 2023. 6. 21. 01:04

1️⃣ HashSet

 

✏️ 풀이 과정

원래 비트마스킹을 이용해야 하는 문제지한 HashSet을 써도 간단하게 해결됩니다.

 

HashSet의 메서드를 적절하게 요구사항에 맞게 사용하면 해결됩니다. 입력을 받을 때만 문제가 생길 수 있는데 아래 코드에서는 인자가 두 개인 경우의 메서드 안에서만 st.nextToken()을 한번 더 호출하도록 만들었습니다.

 

💻 코드

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

public class Main {
	
	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		int M = Integer.parseInt(br.readLine());
		StringTokenizer st;
		String op;
		int num;
		HashSet<Integer> set = new HashSet<>();
		StringBuilder sb = new StringBuilder();
		for(int i=0;i<M;i++) {
			st = new StringTokenizer(br.readLine());
			op = st.nextToken();
			if(op.equals("add")) {
				num = Integer.parseInt(st.nextToken());
				set.add(num);
			} else if(op.equals("check")) {
				num = Integer.parseInt(st.nextToken());
				sb.append(set.contains(num) ? 1 : 0);
				sb.append("\n");
			} else if(op.equals("remove")) {
				num = Integer.parseInt(st.nextToken());
				set.remove(num);
			} else if(op.equals("all")) {
				set = new HashSet<>();
				for(int j=1;j<=20;j++) {
					set.add(j);
				}
			} else if(op.equals("toggle")) {
				num = Integer.parseInt(st.nextToken());
				if(set.contains(num)) {
					set.remove(num);
				} else {
					set.add(num);
				}
			} else {
				set = new HashSet<>();
			}
		}
		System.out.print(sb);
		br.close();
	}
}