비어있는 공집합 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();
}
}
JAVA의 Set클래스를 사용해봤다. HashSet, LinkedHashSet, TreeSet 등이 있는데 이번에는 값의 저장 순서를 유지하는 LinkedHashSet을 사용했다. 각각의 경우를 switch문을 사용해서 LinkedHashSet 메소드로 처리했다.
😁