[boj][c++] 11723 집합

ppparkta·2022년 7월 1일
0

Problem solving

목록 보기
15/65

11723 집합

비트마스크 문제였다. 비트마스크가 뭔지는 모르겠는데 이 문제는 특정 범위의 값을 0과 1로 만드는 간단한 문제였다. 비슷한 유형의 문제를 많이 접해봤는데 비트마스크에 대해서 다루는 문제가 많은 것 같다. 스터디 끝나면 이 주제도 정리해봐야겠다.

문제 자체는 쉬웠으나 입력이 많기 때문에 입출력 이슈가 생겼고 첫 시도에서는 시간초과가 났다. 두번째 시도에서는 ios::sync_with_stdio(0)cin.tie(0)을 붙여줘서 시간초과 문제를 해결했다.

#include	<iostream>
using namespace std;

int bit[21];

int main()
{
	ios::sync_with_stdio(0);
	cin.tie(0);
	int n;
	string s;
	cin >> n;
	for (int i = 0; i < n; i++)
	{
		cin >> s;
		if (s == "add")
		{
			int x;
			cin >> x;
			if (bit[x] == 0)
				bit[x]++;
		}
		if (s == "remove")
		{
			int x;
			cin >> x;
			if (bit[x] == 1)
				bit[x]--;
		}
		if (s == "check")
		{
			int x;
			cin >> x;
			if (bit[x] == 1)
				cout << "1" << "\n";
			else
				cout << "0" << "\n";
		}
		if (s == "toggle")
		{
			int x;
			cin >> x;
			if (bit[x] == 1)
				bit[x] = 0;
			else
				bit[x] = 1;
		}
		if (s == "all")
		{
			for (int j = 0; j < 21; j++)
			{
				bit[j] = 1;
			}
		}
		if (s == "empty")
		{
			for (int j = 0; j < 21; j++)
			{
				bit[j] = 0;
			}
		}
	}
}
profile
겉촉속촉

0개의 댓글