๐ ๋ฌธ์
https://www.acmicpc.net/problem/11723
11723๋ฒ: ์งํฉ
์ฒซ์งธ ์ค์ ์ํํด์ผ ํ๋ ์ฐ์ฐ์ ์ M (1 ≤ M ≤ 3,000,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค๋ถํฐ M๊ฐ์ ์ค์ ์ํํด์ผ ํ๋ ์ฐ์ฐ์ด ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค.
www.acmicpc.net
๋ฌธ์
๋น์ด์๋ ๊ณต์งํฉ 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 ์ฐ์ฐ์ด ์ฃผ์ด์ง๋๋ง๋ค, ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
โ๏ธ ํ์ด
๋นํธ๋ง์คํน์ ๋ํด์ ์ ๋๋ก ์ ๋ฆฌํ ์ ์๋ ์ข์ ๋ฌธ์ ์ด๋ค.
๋๋จธ์ง๋ ๊ฑฐ์ ์๋ ๋ด์ฉ์ด์ง๋ง, "toggle"์ ๊ฒฝ์ฐ๋ ๋ชจ๋ฅด๊ฒ ์ด์ ์์น๋ฅผ ํด์ผ๋ง ํ๋ค.
๐ก ํ ๊ธ์ ๊ฐ๋ ์ XOR ์ฐ์ฐ์ผ๋ก, ๋ ๋นํธ๊ฐ ๋ค๋ฅด๋ฉด 1, ๊ฐ์ผ๋ฉด 0์ ๋ง๋ค์ด ๋ธ๋ค. ์ด ๋ถ๋ถ๋ง ์ธ์ฐ๋ฉด switch๋ฌธ์ ํตํด ๋ฌด๋ํ๊ฒ ํ์ด๋ผ ์ ์๋ค.
๐ป ์์ค์ฝ๋: ์๋ฐ(Java)
public class Main_๋ฐฑ์ค_11723_์งํฉ_์ค๋ฒV {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
int bitmask = 0;
for (int i = 0; i < N; i++) {
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
String op = st.nextToken();
int num;
switch(op) {
case "add":
num = Integer.parseInt(st.nextToken());
bitmask |= (1<<num);
break;
case "remove":
num = Integer.parseInt(st.nextToken());
bitmask &= ~(1<<num);
break;
case "check":
num = Integer.parseInt(st.nextToken());
sb.append((bitmask&(1<<num))!=0?1:0).append("\n");
break;
case "toggle":
num = Integer.parseInt(st.nextToken());
bitmask ^= (1<<num);
break;
case "all":
bitmask = ~0;
break;
case "empty":
bitmask = 0;
break;
}
}//input
System.out.println(sb);
}//end of main
}//end of class
๐ ๐ ๐
๏ผฐ๏ฝ๏ฝ๏ฝ๏ฝ ๏ฝ ๏ผข๏ฝ ๏ผณ๏ผก๏ผน
๐๐ฉ๐ข๐ฏ๐ฌ๐ด ๐ง๐ฐ๐ณ ๐ณ๐ฆ๐ข๐ฅ๐ช๐ฏ๐จ