문제
- 백준 1123 (집합) - Java
- 간단하게 TreeSet을 사용해서 풀려고 한 문제인데 도중에 숫자가 두자리수가 되면 답이 다르게 나옴
- 단순히 10을 1로 인식하는 것인지, 아니면 다른 문제가 있는 것인지 확인해보아야겠다.
시도
- 백준 1123 (집합) - Java
- 직접 찍어보니 숫자 10을 제대로 인식하고 있는 것으로 보인다.
-> 다른 문제가 있는 것으로 보임
- 문자를 받고 숫자를 받지 않는 경우는 empty랑 all 밖에 없는데 그거에서 문제가 있는지 확인해보자
- empty에는 문제가 없다.
- all도 제대로 정렬해주는 것을 볼 수 있었는데...
해결
- 백준 1123 (집합) - Java
- all이 정렬하는 것이 아니라 1부터 20까지가 전부 있는걸로 바꾸는 거였다...
-> 문제를 제대로 읽고 풀자...
코드
import java.io.*;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeSet;
public 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 testCase = Integer.parseInt(br.readLine());
Set<Integer> set = new TreeSet<>();
for (int i = 0; i < testCase; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String op = st.nextToken();
if (op.equals("add")) {
int check = Integer.parseInt(st.nextToken());
set.add(check);
}
else if (op.equals("remove")) {
int check = Integer.parseInt(st.nextToken());
if (set.contains(check)) set.remove(check);
}
else if (op.equals("check")) {
int check = Integer.parseInt(st.nextToken());
if (set.contains(check)) bw.write(String.valueOf(1) + '\n');
else bw.write(String.valueOf(0) + '\n');
}
else if (op.equals("toggle")) {
int check = Integer.parseInt(st.nextToken());
if (set.contains(check)) set.remove(check);
else set.add(check);
}
else if (op.equals("empty")) {
set.clear();
}
else if (op.equals("all")) {
set.clear();
set.add(1);
set.add(2);
set.add(3);
set.add(4);
set.add(5);
set.add(6);
set.add(7);
set.add(8);
set.add(9);
set.add(10);
set.add(11);
set.add(12);
set.add(13);
set.add(14);
set.add(15);
set.add(16);
set.add(17);
set.add(18);
set.add(19);
set.add(20);
}
}
bw.flush();
bw.close();
br.close();
}
}