한다 공부
[C++] 백준 알고리즘 11723번 집합 본문
알고리즘 분류를 보니 비트마스킹이라고 되어있었다
하지만 비트마스킹이 익숙하지 않아서 set을 이용했다
아니나 다를까 나타나는 시간초과
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
를 이용해서 cin과 cout의 시간을 단축시키자
그리고 all 명령어를 받으면
기존 set 내용을 지우고
set에 1~20값을 새로 넣어야한다
이때 for문 쓰면 시간초과 뜬다
직접 값을 넣기로 하자...
#include<iostream>
#include<set>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
set<int> s;
int n;
cin >> n;
string str;
int x;
while (n--) {
cin >> str;
if (str == "add") {
cin >> x;
s.insert(x);
}
else if (str == "remove") {
cin >> x;
s.erase(x);
}
else if (str == "check") {
cin >> x;
if (s.find(x)==s.end()) cout << 0 << '\n';
else cout << 1 << '\n';
}
else if (str == "toggle") {
cin >> x;
if (s.find(x) == s.end()) s.insert(x);
else s.erase(x);
}
//여기서 for문을 이용해 set에 값을 넣으니 시간초과가 떴다
//직접 값을 넣자
if (str == "all")
s = { 1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20 };
if (str == "empty") {
set<int> temp;
s = temp;
}
}
}
'Algorithm > 문제풀이' 카테고리의 다른 글
[C++] 백준 알고리즘 11268번 절댓값 힙 (0) | 2021.09.20 |
---|---|
[C++] 백준 알고리즘 3613번 Java vs C++ (0) | 2021.09.16 |
[C++] 백준 알고리즘 1935번 후위 표기식2 (0) | 2021.09.16 |
[C++] 백준 알고리즘 20920번 영단어 암기는 괴로워 (0) | 2021.09.15 |
[C++] 백준 알고리즘 10866번 덱 (0) | 2021.09.15 |