알고리즘/백준
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();
}
}