이우의 개발일지
[백준/C++] 11723번 집합 - (1) (배열 사이즈, deque 사이즈 변동) 본문
백준 11723번 집합
https://www.acmicpc.net/problem/11723
이 문제를 쉽게 생각하고 접근했다면, 낭패를 봤을 것이다.
단순히 add, remove, check, toggle, all, empty 함수를 구현하는게 아닌 만약 그게 존재한다면 추가를 안하는 식의 조건이 붙는다.
문제 1. 배열 사이즈 사용 X - (1 ≤ x ≤ 20이라는 조건
문제 조건 중 숫자의 크기는 20이하라는 조건이 주어졌다. 이를 무시하고 단순히 deque로 구현을 할려다보니 만약 수를 빼야되면, 그 수를 앞으로 보내질때까지 pop을 하는 방법을 썼다. (난이도 4배쯤 상승..)
문제 2. deque 사이즈 변동
저번 글에서도 똑같은 실수를 했는데 deque, queue, stack 등의 사이즈를 for문 조건을 걸어놓고 push, pop을 해주면 크기가 달라진다는 점이다 ㅠㅠ 이를 간과하고 했다간 디버깅하는데 시간이 굉장히 오래걸린다... ㅋㅋ
#include <iostream>
#include <cstring>
using namespace std;
int main(){
ios_base::sync_with_stdio(0);
cin.tie(0);
string str = "";
int M, x;
int arr[21] = {0};
cin >> M;
for(int i = 0; i<M; i++){
cin >> str;
if(str=="add"){
cin >> x;
if(arr[x]==0){ //없으면
arr[x] = 1;
}
}
else if(str=="remove"){
cin >> x;
if(arr[x] == 1){ //있으면
arr[x] = 0;
}
}
else if(str=="check"){
cin >> x;
if(arr[x] == 0){ //없으면
cout << "0\n";
} else{
cout << "1\n";
}
}
else if(str=="toggle"){
cin >> x;
if(arr[x] == 1){ //있으면
arr[x] = 0;
} else{
arr[x] = 1;
}
}
else if(str=="all"){
for(int k = 1; k<=20; k++){ arr[k] = 1;}
}
else if(str=="empty"){
memset(arr, 0, sizeof(arr));
}
}
return 0;
}
반응형
'Coding' 카테고리의 다른 글
[프로그래머스/c++] 달리기 경주 코딩 문제 (0) | 2024.05.21 |
---|---|
[백준/C++] 11650번 좌표 정렬하기 (0) | 2024.05.21 |
[프로그래머스/C++] PCCE 기출문제 10번 - 데이터 분석 - (1 swap, 변수 줄이기) (0) | 2024.05.20 |
[백준/C++] 11659번 구간 합 구하기 4 (DP) (0) | 2024.05.19 |
[백준/C++] 1149번 RGB 거리 (DP) (0) | 2024.05.19 |