๋ฌธ์
๋น์ด์๋ ๊ณต์งํฉ 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 ์ฐ์ฐ์ด ์ฃผ์ด์ง๋๋ง๋ค, ๊ฒฐ๊ณผ๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
26 add 1 add 2 check 1 check 2 check 3 remove 2 check 1 check 2 toggle 3 check 1 check 2 check 3 check 4 all check 10 check 20 toggle 10 remove 20 check 10 check 20 empty check 1 toggle 1 check 1 toggle 1 check 1 |
์์ ์ถ๋ ฅ
1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 0 |
๋ฌธ์ ํ์ด
์งง์ ์ํ์๊ฐ๊ณผ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ถฉ์กฑํ๊ธฐ ์ํด ๋นํธ๋ง์คํฌ๋ฅผ ์ฌ์ฉํ๋ค.
/* ๋นํธ๋ง์คํฌ๋ฅผ ์ด์ฉํ ์งํฉ ์ฐ์ฐ */
/* 2019-08-16 ์งํฉ */
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
using namespace std;
int main() {
int tcase;
int a = 0;
scanf("%d", &tcase);
for (int i = 0; i < tcase; i++) {
char tmp[10];
int x;
scanf("%s", tmp);
if (strcmp(tmp, "add") == 0) {
scanf("%d", &x);
a |= (1 << x);
}
else if (strcmp(tmp, "remove") == 0) {
scanf("%d", &x);
a &= ~(1 << x);
}
else if (strcmp(tmp, "check") == 0) {
scanf("%d", &x);
if (a & (1 << x)) printf("1\n");
else printf("0\n");
}
else if (strcmp(tmp, "toggle") == 0) {
scanf("%d", &x);
a ^= (1 << x);
}
else if (strcmp(tmp, "all") == 0) {
a = (1 << 21) - 1;
}
else if (strcmp(tmp, "empty") == 0) {
a = 0;
}
}
}
๋นํธ๋ง์คํฌ๋ ์ด์ง์ ํํ์ฒด๊ณ๋ฅผ ์ด์ฉํด ํ๋์ ๋ณ์๋ฅผ ๋ฐฐ์ด์ฒ๋ผ ์ฌ์ฉํ๋ ๊ฒ์ด๋ค. ์๋ฅผ๋ค์ด 1011 1100 ์ธ ๊ฒฝ์ฐ ์ด ์ซ์๊ฐ ํํํ๋ ์งํฉ์ {2,3,4,5,7} ์ด๊ณ ์ด๋ฌํ ์ซ์๊ฐ ์ผ์ ธ ์๋ค๊ณ ์ด์ผ๊ธฐ ํ๋ค. ์ฆ x์ ๋ฒ์๊ฐ 1๋ถํฐ 20์ด๊ธฐ ๋๋ฌธ์ ๊ฐ๋จํ๊ฒ 21bit๋ฅผ ์ด์ฉํด ํ๋์ ์๋ฆฌ๊ฐ ํ๋์ ์์๋ฅผ ๋ปํ๊ฒ ์ฌ์ฉํ๋ฉด ๋๋ค.
๊ฐ์ฅ ๋ฌธ์ ์๋ ๋ถ๋ถ์ ์๊ฐ์ด๊ณผ์๋ค. cin, cout์ ์ฌ์ฉํ๋๊น ์๊ฐ์ด๊ณผ๊ฐ ๋์ ๋จ์ํ scanf, printf๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์์๋ค.
์ฌ์ค ๊ณต์งํฉ S๋ฅผ ํํํ๊ธฐ ์ํด unsigned int๋ฅผ ์ฒ์์ ์ฌ์ฉํ์ง๋ง int๊ฐ 4byte์ด๊ณ ์ฐ๋ฆฌ๋ 21bit๋ง์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ต์์ ๋นํธ์ ๋ถํธ๋ฌธ์ ๋ ์๊ฐํ์ง ์์๋ ๋๋ค.
๋นํธ๋ง์คํฌ์ ๋ํ ์์ธํ ๋ด์ฉ์ ์ข ๋ง๋ถ์ ๋์์์ผ๋ ๊ณต๋ถํ๋ฉด ์ข์ ๊ฒ ๊ฐ๋ค.