백준

백준 11723 집합 c++

2024. 3. 30. 22:45

 

 

 

처음 작성한 코드는 다음과 같다.

하지만 시간초과가 떴다.

#include <iostream>
#include <string>
#include <vector>
using namespace std;

int main(){
    int m;
    cin >> m;
    
    vector<int> arr;
    
    for(int i=0; i<m; i++){
        string str;
        cin >> str;
        
        if(str=="add"){
            int x;
            cin >> x;   
            for(int i=0; i<arr.size(); i++){
                if(arr[i]==x)
                    break;
                if(i==arr.size()-1)
                    arr[arr.size()] = x;
            }
        }
        else if(str=="remove"){
            int x;
            cin >> x;    
            for(int i=0; i<arr.size(); i++){
                if(arr[i]==x){
                    for(int j=i+1; j<arr.size(); j++){
                        arr[j-1] = arr[j];
                    }
                }
            }            
        }
        else if(str=="check"){
            int x;
            cin >> x;  
            bool isthere = false;
            for(int i=0; i<arr.size(); i++){
                if(arr[i]==x){
                    isthere = true;
                    cout << "1" << "\n";
                    break;                    
                }
            }     
            if(isthere==false)
                cout << "0" << "\n";
        }
        else if(str=="toggle"){
            int x;
            cin >> x;    
            bool isthere = false;
            for(int i=0; i<arr.size(); i++){
                if(arr[i]==x){
                    isthere = true;
                    for(int j=i+1; j<arr.size(); j++){
                        arr[j-1] = arr[j];
                    }
                }
            }      
            if(isthere==false)
                arr[arr.size()] = x;
        }
        else if(str=="all"){
            vector<int> arr;
            for(int i=0; i<20; i++)
                arr[i] = i+1;
        }
        else if(str=="empty"){
            vector<int> arr;
        }        
    }
    
    return 0;
}

 

 

 

다시 작성한 코드는 다음과 같다.

1부터 20까지의 수만 넣을 수 있으므로 이렇게 마치 stack에 숫자를 추가하는 방식보다는,

그냥 1부터 20까지의 인덱스 배열을 선언해놓고 그 숫자가 있으면 1, 없으면 0으로

간단하게 표현하는 방식이 시간복잡도도 줄이고 코드도 간단하게 구현할 수 있었다.

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 4659 비밀번호 발음하기 c++  (0) 2024.04.01
백준 10431 줄세우기 c++  (0) 2024.03.31
백준 2003 수들의 합 2 c++  (0) 2024.03.29
백준 13300 방 배정 c++  (0) 2024.03.28
백준 1475 방 번호 c++  (0) 2024.03.27