[백준 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
댓글을 사용할 수 없습니다.