아.. 그냥 단순하게 리스트에 넣어서 풀려고 했는데 시간초과..
그래서 리스트하면 안되나 싶어서 배열로 변경했는데도 시간초과...
진짜 부족하구나 해서 다른분들 사이트가서 봤드만 비트연산으로 하시고, 배열은 잘 보이질 않았다..
그런도중 배열로 하신분중에서도 시간초과가 계속 난단다.
알고보니 check 때마다 출력해서 그렇단다.. 설마설마해서 나도 StringBuilder로 쭉 모아놨다가
마지막에 출력했더니 성공~
그래서 리스트하면 안되나 싶어서 배열로 변경했는데도 시간초과...
진짜 부족하구나 해서 다른분들 사이트가서 봤드만 비트연산으로 하시고, 배열은 잘 보이질 않았다..
그런도중 배열로 하신분중에서도 시간초과가 계속 난단다.
알고보니 check 때마다 출력해서 그렇단다.. 설마설마해서 나도 StringBuilder로 쭉 모아놨다가
마지막에 출력했더니 성공~
package backjoon;
/*문제
비어있는 공집합 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을 출력한다.
toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20)
all: S를 {1, 2, ..., 20} 으로 바꾼다.
empty: S를 공집합으로 바꾼다.
입력
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다.
둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
출력
check 연산이 주어질때마다, 결과를 출력한다.*/
import java.io.BufferedReader;
import java.io.InputStreamReader;
public class back11723 {
static String[] sArr = new String[21];
static StringBuilder sb = new StringBuilder();
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
for(int i=0; i<sArr.length; i++){
sArr[i] = "";
}
int testCase = Integer.parseInt(br.readLine());
for(int i=0; i<testCase; i++){
String[] arr = br.readLine().split(" ",-1);
checkFunc(arr);
}
System.out.print(sb.toString());
}
static void checkFunc(String[] arr){
if(arr[0].equals("add")){
if(sArr[Integer.parseInt(arr[1])].equals("")) sArr[Integer.parseInt(arr[1])] = arr[1];
}else if(arr[0].equals("remove")){
if(!sArr[Integer.parseInt(arr[1])].equals("")) sArr[Integer.parseInt(arr[1])] = "";
}else if(arr[0].equals("check")){
if(sArr[Integer.parseInt(arr[1])].equals("")) sb.append("0\n");
else sb.append("1\n");
}else if(arr[0].equals("toggle")){
if(sArr[Integer.parseInt(arr[1])].equals("")) sArr[Integer.parseInt(arr[1])] = arr[1];
else sArr[Integer.parseInt(arr[1])] = "";
}else if(arr[0].equals("empty")){
for(int i=0; i<sArr.length; i++){
sArr[i] = "";
}
}else if(arr[0].equals("all")){
for(int i=0; i<sArr.length; i++){
sArr[i] = ""+i;
}
}
}
}
댓글
댓글 쓰기