#include <iostream>
#include <string>
#include <set>
using namespace std;
int m;
string line;
int value;
bool ans[21];
int main(void)
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
cin >> m;
while(m--)
{
cin >> line;
switch(line[1])
{
// add, 해당 인덱스 무조건 true
case 'd' :
cin >> value;
ans[value] = true;
break;
// remove, 해당 인덱스 무조건 false
case 'e' :
cin >> value;
ans[value] = false;
break;
// check, 해당 인덱스 값 출력
case 'h' :
cin >> value;
if(ans[value]) cout << 1 << '\n';
else cout << 0 << '\n';
break;
// toggle, 해당 인덱스값만 뒤집어줌
case 'o' :
cin >> value;
ans[value] = !ans[value];
break;
// all, 전부 채워줌
case 'l' :
for(int i = 1 ; i < 21 ; i++)
{
ans[i] = true;
}
break;
// empty, 전부 비워줌
case 'm' :
for(int i = 1 ; i < 21 ; i++)
{
ans[i] = false;
}
break;
}
}
}
[Try]
1. 문제제목의 집합을 보고 단순무식하게 set 자료구조를 생각했는데 시간초과가 났다.
2. 생각해보니 그냥 배열로 사용해서 인덱스에 바로 접근해도 될 것 같은데 왜 set에 있는 find 로 매번 찾아준거지...
[Point]
1. 채점시간이 파이썬마냥 오래걸려서 좀 쫄렸다
2. 굳이 배열도 할 필요 없이 정말 하나의 수에 있는 비트를 활용하여 마스킹 하는 방법이 정석인 것 같다!
3. 문자열 비교 strcmp, 이 경우 c_str 로 만들어줘야 할 것 같다.
'PS > BOJ' 카테고리의 다른 글
[백준] 11726.cpp : 2 x n 타일링 (0) | 2020.05.26 |
---|---|
[백준] 4948.cpp : 베르트랑 공준 (0) | 2020.05.26 |
[백준] 1929.cpp : 소수 구하기 (0) | 2020.05.25 |
[백준] 18111.cpp : 마인크래프트 (0) | 2020.05.23 |
[백준] 2805.cpp : 나무 자르기 (0) | 2020.05.21 |