Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 구현
- C++
- 6.042j
- 텔레스코픽로봇
- 백준
- 수학
- baekjoon
- 다리로봇
- 로봇공학
- MIT opencourse
- 로보틱스
- BOJ
- mathematics for computer science
- lqr
- 자료구조
- HJB방정식
- 대수경
- 최적제어
- 전국 대학생 수학 경시대회
- 집합과 맵
- mit
- 논문리뷰
- 문자열
- std::sort
- 실버 5
- 큐
- 실버 4
- baekjoon problem solving
- 정렬
- LeggedRobot
Archives
- Today
- Total
서두르지 말고 쉬지 말자
백준 11723번 집합(C++) 본문
solved.ac 티어 : 실버 5
문제 유형 : 비트마스크
문제 해결 방안 : 시간이 매우 적게 주어지므로(1.5초) 비트마스크를 이용해 풀어야 한다. 시간을 단축하기 위해 코드 2개를 삽입했다.
문제 해결 소감 : 비트마스크가 뭔지 몰라서 공부하고 풀었다. 새로운 유요한 개념을 알게 됐다. C++에서 시간 단축을 위한 코드를 알게 되었다.
#include <iostream>
std::string cmd;
int x = 0;
int M = 0;
unsigned int bit = 0;
int main()
{
std::ios::sync_with_stdio(false);
std::cin.tie(NULL); // 시간 단축용 (stdio와 동기화 끊기& 자동 flush 안하기)
std::cin >> M;
for (int i = 0; i < M; i++)
{
std::cin >> cmd;
if (cmd == "add") // 집합에 x값 추가 이미 있으면 무시
{
std::cin >> x;
bit |= (1 << (x - 1)); // 정수 1을 왼쪽으로 x비트 만큼 밀고, bit OR 연산 실행 -> x자리 비트 1로 변경
}
else if (cmd == "remove") // 집합에 들어있는 x값 제거 이미 없으면 무시
{
std::cin >> x;
bit &= ~(1 << (x - 1)); // 정수 1을 왼쪽으로 x비트 만큼 밀고, bit 연산 실행
}
else if (cmd == "check") // 집합에 x값이 있으면 1 아니면 0 출력
{
std::cin >> x;
if (bit & (1 << (x - 1))) // x가 있으면 해당 위치 비트가 살아남아서 0이상 아니면 0
{
std::cout << "1\n";
}
else
{
std::cout << "0\n";
}
}
else if (cmd == "toggle") // S에 x가 있으면 제거, 없으면 추가
{
std::cin >> x;
if (bit & (1 << (x - 1))) // x가 있다면(x 위치 비트가 1이라면)
{
bit &= ~(1 << (x - 1)); // x 제거
}
else // x가 없다면
{
bit |= (1 << (x - 1)); // x 추가(x 위치 비트 1로 변경)
}
}
else if (cmd == "all")
{
bit |= ~0; // 비트 다 0인걸 1로 반전 후 OR연산 -> 전부 다 1로 만듬
}
else if (cmd == "empty")
{
bit = 0; // 0 대입 -> 비트 다 0
}
}
}반응형
'코딩 공부 > Baekjoon Problem Solving' 카테고리의 다른 글
| 백준 10845번 큐(C++) (0) | 2025.04.25 |
|---|---|
| 백준 1620번 나는야 포켓몬 마스터 이다솜(C++) (0) | 2025.04.17 |
| 백준 2798번 블랙잭(C++) (0) | 2025.03.10 |
| 백준 11050번 이항계수 1 (C++) (0) | 2025.03.09 |
| 백준 1074번 Z (C++) (0) | 2025.03.06 |
