Algorithm/구현

BOJ#11723 집합

밤이2209 2017. 9. 28. 17:02

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