BOJ#11723 집합
* 문제
* 풀이
매우 쉬운 문제이지만 시간 제한과 메모리 제한을 모두 생각해야 합니다.
저는 비트마스크를 사용하여 풀어보았습니다.
아니면 배열을 사용해서도 쉽게 풀 수 있습니다.
* 나의 코드
import java.io.*;
import java.util.StringTokenizer;
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 bitmask = 0;
int M = Integer.parseInt(br.readLine());
StringTokenizer st;
String cmd;
int num = 0;
while (M-- > 0) {
st = new StringTokenizer(br.readLine());
cmd = st.nextToken();
if (st.hasMoreTokens()) num = Integer.parseInt(st.nextToken());
switch (cmd) {
case "add":
bitmask |= 1 << num;
break;
case "remove":
bitmask &= ~(1 << num);
break;
case "check":
bw.write(((bitmask & (1 << num)) >> num) + "\n");
break;
case "toggle":
bitmask ^= (1 << num);
break;
case "all":
bitmask |= (1 << 21) - 1;
break;
case "empty":
bitmask = 0;
break;
}
}
bw.flush();
bw.close();
br.close();
}
}
'Algorithm > 구현' 카테고리의 다른 글
BOJ#12094, BOJ#12100, BOJ#12208, BOJ#12209 2048 (0) | 2017.03.06 |
---|