입력 코드
#include<stdio.h>
#include<stdbool.h>
#include<ctype.h>
int main(void)
{
bool S[21]={false, };
int M;
scanf("%d", &M);
getchar();
for(int m=0;m<M;m++)
{
int x;
char command[10]={'\0', };
getchar();
fgets(command,sizeof(command),stdin);
switch(command[0])
{
case 'd': //add
x=isdigit(command[4])?10*(command[3]-'0')+command[4]-'0':command[3]-'0';
S[x]=true;
break;
case 'e': //remove
x=isdigit(command[7])?10*(command[6]-'0')+command[7]-'0':command[6]-'0';
S[x]=false;
break;
case 'h': //check
x=isdigit(command[6])?10*(command[5]-'0')+command[6]-'0':command[5]-'0';
printf("%d\n", S[x]);
break;
case 'o': //toggle
x=isdigit(command[7])?10*(command[6]-'0')+command[7]-'0':command[6]-'0';
S[x]=S[x]==true?false:true;
break;
case 'l': //all
for(x=1;x<21;x++)
S[x]=true;
break;
case 'm': //empty
for(x=1;x<21;x++)
S[x]=false;
break;
}
}
return 0;
}
출처 www.acmicpc.net/source/24158179
코드 설명
#비트마스킹
문제 출처
11723번: 집합
첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다.
www.acmicpc.net
'C' 카테고리의 다른 글
#104. [백준_C언어] 10974 : 모든 순열 \ 브루트포스 알고리즘 (0) | 2021.03.07 |
---|---|
#103. [백준_C언어] 1094 : 막대기 \ 비트마스킹 (0) | 2021.02.27 |
#101. [백준_C언어] 15649 : N과 M (1) \ 백트래킹 (0) | 2021.02.26 |
#100. [백준_C언어] 14888 : 연산자 끼워넣기 \ 백트래킹 (0) | 2021.02.26 |
#99. [백준_C언어] 2309 : 일곱 난쟁이 \ 브루트포스 알고리즘 (0) | 2021.02.25 |