[백준 15787번 C/C++] 기차가 어둠을 헤치고 은하수를
[백준 15787번 C/C++] 기차가 어둠을 헤치고 은하수를
https://www.acmicpc.net/problem/15787
해결전략
비트마스킹 BitMasking
정답코드
#include <iostream>
#include <vector>
#include <set>
using namespace std;
int n, m; // n: 기차의 수, m: 명령의 수
int main(){
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
cin >> n >> m;
vector<int> v(n, 0);
for (int i = 0; i < m; i++)
{
int orderIdx, train, x;
cin >> orderIdx >> train;
train--; // 0-based index로 변환
if (orderIdx == 1 || orderIdx == 2) {
cin >> x;
x--; // 0-based index로 변환
// x 값이 0~19 범위를 벗어날 수 없도록 제한
if (x < 0 || x > 19) continue;
}
if (orderIdx == 1) {
v[train] |= (1 << x);
}
else if (orderIdx == 2) {
v[train] &= ~(1 << x);
}
else if (orderIdx == 3) {
v[train] <<= 1;
v[train] &= ((1 << 20) - 1); // 상위 20번째 비트를 넘지 않도록 제한
}
else if (orderIdx == 4) {
v[train] >>= 1;
}
}
set<int> mySet;
for (int i = 0; i < v.size(); i++){
mySet.insert(v[i]);
}
cout << mySet.size() << "\n";
return 0;
}
'⭐ 코딩테스트 > 백준' 카테고리의 다른 글
[백준 2961번 C/C++] 도영이가 만든 맛있는 음식 (0) | 2024.08.01 |
---|---|
[백준 2800번 C/C++] 괄호 제거 (0) | 2024.07.31 |
[백준 14569번 C/C++] 시간표 짜기 (0) | 2024.07.29 |
[백준 14503번 C/C++] 로봇 청소기 (0) | 2024.07.28 |
[백준 17135번 C/C++] 캐슬 디펜스 (0) | 2024.07.25 |
댓글
이 글 공유하기
다른 글
-
[백준 2961번 C/C++] 도영이가 만든 맛있는 음식
[백준 2961번 C/C++] 도영이가 만든 맛있는 음식
2024.08.01 -
[백준 2800번 C/C++] 괄호 제거
[백준 2800번 C/C++] 괄호 제거
2024.07.31 -
[백준 14569번 C/C++] 시간표 짜기
[백준 14569번 C/C++] 시간표 짜기
2024.07.29 -
[백준 14503번 C/C++] 로봇 청소기
[백준 14503번 C/C++] 로봇 청소기
2024.07.28