728x90
● [문제번호 11723] 집합
https://www.acmicpc.net/problem/11723
● 알아야 할 것
: NULL
● 풀이 과정
: 문제에서 주어진 내용에 따라 간단하게 구현가능하다.
● 주의 할 것
: 숫자 입력 후 문자열 입력받을 때 공백있는 문자열이 있는 경우,
ws 또는 cin.ignore()를 이용해야한다.
하지만 아래 코드에서는 공백없는 문자열을 입력받았으므로
상관없다.
● 참고 할 것
: 숫자 입력 후 공백있는 문자열 입력시 주의사항
https://pirateturtle.tistory.com/151
● 풀이 코드
#include <bits/stdc++.h>
using namespace std;
// num : 각 원소의 값이 (0 : 집합에 없음 / 원소의 index : 집합에 존재함)
// cmd : 명령 문자열 입력
int num[21];
string cmd;
int M, x;
// S에 x를 추가한다
void ADD()
{
cin >> x;
num[x] = x;
}
// S에 x를 제거한다
void REMOVE()
{
cin >> x;
num[x] = 0;
}
// S에 x가 있으면 1, 없으면 0 출력
void CHECK()
{
cin >> x;
if(num[x])
cout << 1 << "\n";
else
cout << 0 << "\n";
}
// S에 x가 있으면 x를 제거, 없으면 x를 추가
void TOGGLE()
{
cin >> x;
if(num[x])
num[x] = 0;
else
num[x] = x;
}
// S를 {1, 2, ... , 20} 으로 바꾼다
void ALL()
{
for(int i = 1; i <= 20; i++)
num[i] = i;
}
// S를 공집합으로 바꾼다
void EMPTY()
{
for(int i = 1; i <= 20; i++)
num[i] = 0;
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// 연산의 수 입력
cin >> M;
// 명령별 함수 실행
for(int m = 0; m < M; m++)
{
cin >> cmd;
if(cmd == "add")
ADD();
else if(cmd == "remove")
REMOVE();
else if(cmd == "check")
CHECK();
else if(cmd == "toggle")
TOGGLE();
else if(cmd == "all")
ALL();
else if(cmd == "empty")
EMPTY();
}
return 0;
}
● [백준] - [알고리즘 기초 2/2] - [540 - 브루트 포스 - 비트마스크] 문제집
번호 | 문제 번호 | 문제 이름 | 풀이 링크 |
1 | 11723 | 집합 | https://pirateturtle.tistory.com/265 |
2 | 1182 | 부분수열의 합 | https://pirateturtle.tistory.com/266 |
3 | 14889 | 스타트와 링크 | https://pirateturtle.tistory.com/267 |
4 | 14391 | 종이 조각 | https://pirateturtle.tistory.com/268 |
728x90
'Baekjoon > [Code.plus] 알고리즘 기초 2/2' 카테고리의 다른 글
[BOJ/백준] 14391 종이 조각 (0) | 2021.09.09 |
---|---|
[BOJ/백준] 14889 스타트와 링크 (0) | 2021.09.09 |
[BOJ/백준] 1182 부분수열의 합 (1) | 2021.09.09 |
[BOJ/백준] 1248 맞춰봐 (0) | 2021.09.09 |
[BOJ/백준] 2529 부등호 (0) | 2021.09.09 |
[BOJ/백준] 15661 링크와 스타트 (0) | 2021.09.09 |
[BOJ/백준] 14889 스타트와 링크 (0) | 2021.09.09 |
댓글