728x90
728x90
https://www.acmicpc.net/problem/11723
난이도: solved.ac 실버 5
알고리즘 분류
구현, 비트마스킹
접근 방법
찾고자 하는 숫자의 번호를 index로 갖는 배열의 값을 1 또는 0으로 두어 집합 내 숫자의 유무를 확인할 수 있다.
set[5] = 1은 숫자 5가 집합 S에 있다는 것을 의미하고 set[5] = 0은 숫자 5가 집합 S에 없다는 것을 의미한다.
코드
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
int set[21];
int main() {
int M, i, j;
scanf("%d", &M);
while (M) {
char command[7];
int num;
scanf("%s", &command);
if (!strcmp(command, "add")) {
scanf("%d", &num);
set[num] = 1;
}
else if (!strcmp(command, "remove")) {
scanf("%d", &num);
set[num] = 0;
}
else if (!strcmp(command, "check")) {
scanf("%d", &num);
if (set[num])
printf("1\n");
else
printf("0\n");
}
else if (!strcmp(command, "toggle")) {
scanf("%d", &num);
if (set[num])
set[num] = 0;
else
set[num] = 1;
}
else if (!strcmp(command, "all")) {
for (i = 1; i <= 20; i++)
set[i] = 1;
}
else if (!strcmp(command, "empty")) {
for (i = 1; i <= 20; i++)
set[i] = 0;
}
M--;
}
return 0;
}
반응형