처음 작성한 코드는 다음과 같다.
하지만 시간초과가 떴다.
#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 |