728x90
문제 링크 : https://www.acmicpc.net/problem/11723
목차
1. 설명
2. 내 코드
3. 문제 풀이 해석 내용
4. 실행 결과
설명
백준 실버 5 문제 입니다.
문제명 : 집합
내 코드
#include <iostream>
#include <string>
#include <vector>
using namespace std;
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int M;
cin >> M;
vector<bool> S(21, false);
string command;
int x;
while (M--)
{
cin >> command;
if (command == "add")
{
cin >> x;
S[x] = true;
}
else if (command == "remove")
{
cin >> x;
S[x] = false;
}
else if (command == "check")
{
cin >> x;
cout << (S[x] ? 1 : 0) << '\n';
}
else if (command == "toggle")
{
cin >> x;
S[x] = !S[x];
}
else if (command == "all")
{
fill(S.begin() + 1, S.end(), true);
}
else if (command == "empty")
{
fill(S.begin() + 1, S.end(), false);
}
}
}
문제 풀이 해석 내용
입출력 최적화
ios::sync_with_stdio(false);
cin.tie(nullptr);
입출력을 더 빠르게 하기 위해 C++의 동기화를 비활성화합니다
변수 선언 및 초기화
int M;
cin >> M;
vector<bool> S(21, false);
M: 명령의 개수를 저장할 변수입니다.
S: 크기 21의 불리언 벡터로, 집합의 원소(1부터 20까지)를 관리합니다.
초기값은 모두 false로 설정됩니다.
명령 처리
string command;
int x;
while (M--)
{
cin >> command;
command 변수는 현재 명령을 저장하고, x는 명령에 대한 인자를 저장합니다.
while (M--) 루프를 사용하여 M개의 명령을 처리합니다.
명령어에 따른 집합 조작
if (command == "add")
{
cin >> x;
S[x] = true;
}
else if (command == "remove")
{
cin >> x;
S[x] = false;
}
else if (command == "check")
{
cin >> x;
cout << (S[x] ? 1 : 0) << '\n';
}
else if (command == "toggle")
{
cin >> x;
S[x] = !S[x];
}
else if (command == "all")
{
fill(S.begin() + 1, S.end(), true);
}
else if (command == "empty")
{
fill(S.begin() + 1, S.end(), false);
}
각 명령에 따라 집합을 조작합니다:
add x: 원소 x를 집합에 추가합니다. S[x]를 true로 설정합니다.
remove x: 원소 x를 집합에서 제거합니다. S[x]를 false로 설정합니다.
check x: 원소 x가 집합에 있으면 1, 없으면 0을 출력합니다.
toggle x: 원소 x가 집합에 있으면 제거하고, 없으면 추가합니다. S[x]의 값을 반전시킵니다.
all: 집합을 {1, 2, ..., 20}으로 설정합니다. fill 함수를 사용하여 S[1]부터 S[20]까지 true로 설정합니다.
empty: 집합을 비웁니다. fill 함수를 사용하여 S[1]부터 S[20]까지 false로 설정합니다.
실행 결과
728x90
'c++' 카테고리의 다른 글
백준 c++ 18870 문제 풀이 (0) | 2025.04.08 |
---|---|
백준 c++ 1152 문제 풀이 (0) | 2025.04.07 |
백준 c++ 2476 문제 풀이 (0) | 2025.04.05 |
백준 c++ 2562 문제 풀이 (0) | 2025.04.04 |
백준 c++ 2738 문제 풀이 (0) | 2025.04.03 |