Algorithm

[백준/C++] 11723 집합 (S5)

Yannoo 2023. 10. 17. 11:41
728x90
유형 난이도 완료일 링크 특이사항
집합 실버5 23/03/23 https://www.acmicpc.net/problem/11723  

 

내 코드

#include <iostream>
#include <set>

using namespace std;

set<int> box;
string s;
int k=0;

int main(void)
{
	ios::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
	

	
	int n=0;
	cin >> n;
	
	//unordered_set<int> setting ={1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};
	
	for(int i= 0; i<n; i++)
	{
		cin >> s;
		char c = s[1];
			
		if(c=='d')
		{
			cin >> k;
			box.insert(k);
		}
		
		else if(c=='e')
		{
			cin >> k;
			box.erase(k);
		}
		
		else if(c=='h')
		{
			cin >> k;
			
			if(box.find(k)==box.end())
				cout<<0<<"\\n";
			else
				cout<<1<<"\\n";
		}
		
		else if(c=='o')
		{
			cin >> k;
			
			if(box.find(k)==box.end())
				box.insert(k);
			else
				box.erase(k);
		}
		
		else if(c=='l')
		{
			//for(int i=0;i<20;i++)
				//box.insert(i+1);
			box = {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20};		
		}
		
		else if(c=='m')
		{
			box.clear();
		}
	}
}

계속 시간 초과가 나서 당황했다. n이 최대 300만으로 크고 set의 삽입/삭제/탐색에 logN의 시간복잡도를 가지므로 시간이 빠듯한 듯 했다. 그래도 70%가까이에서 시간 초과를 받았기에 이곳 저곳에서 시간을 조금씩이라도 줄여 통과시켰다.

 

728x90