Notice
Recent Posts
Recent Comments
Link
오르막길
[JAVA] 11723. 집합 본문
문제
비어있는 공집합 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를 공집합으로 바꾼다.
입력
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
출력
check 연산이 주어질때마다, 결과를 출력한다.
Code
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
import java.util.StringTokenizer;
public class BOJ_11723 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int M = Integer.parseInt(br.readLine());
String command = "";
int x = 0;
Set<Integer> set = new HashSet<>();
// 반복문과 다음과 같이 초기화 하는 법 둘다 성능적으로는 큰차이가 없겠지만
// 처음보는 초기화 방법이라 시도해봄
Set<Integer> allSet = new HashSet<>(Arrays.asList
(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20));
for (int i=0; i<M; i++) {
st = new StringTokenizer(br.readLine(), " ");
command = st.nextToken();
switch (command) {
case "add":
x = Integer.parseInt(st.nextToken());
set.add(x);
break;
case "remove":
x = Integer.parseInt(st.nextToken());
set.remove(x);
break;
case "check":
x = Integer.parseInt(st.nextToken());
if (set.contains(x)) sb.append("1"+"\n");
else sb.append("0"+"\n");
break;
case "toggle":
x = Integer.parseInt(st.nextToken());
if (set.contains(x)) set.remove(x);
else set.add(x);
break;
case "all":
set = new HashSet<>(allSet);
break;
case "empty":
set.clear();
break;
}
}
System.out.println(sb);
}
}
Today I Leaned
set을 처음 연습하는 문제 같다. 그래서 set 관련 함수들 복습하고
set은 초기화 하는 방법이 궁금해서 검색해봤는데
Set<Integer> allSet = new HashSet<>(Arrays.asList(1, 2, 3, ... , 20)); 형태로 쓰는걸 알게됐다!
'백준 풀어보기' 카테고리의 다른 글
[JAVA] 23971. ZOAC 4 (1) | 2024.04.19 |
---|---|
[JAVA] 11726. 2xn 타일링 (0) | 2024.04.04 |
[JAVA] 9095. 1, 2, 3 더하기 (0) | 2024.03.31 |
[JAVA] 1927. 최소 힙 (0) | 2024.03.28 |
[JAVA] 14940. 쉬운 최단거리 (0) | 2024.03.28 |