November 02, 2021 ( last updated : November 02, 2021 )
비트마스킹
알고리즘
https://github.com/sneakstarberry/
[백준] 13915번 현수의 열기구 교실
다른 종류의 열기구를 타야지만 숙련도가 다르게 측정이됩니다. 따라서 비트마스킹을 통해서 각 수강생의 숙련도를 저장하고 중복되지 않도록 배열에 넣었습니다. 지금 생각해보니 set
을 썻어도 되었을 것 같습니다.
#include <iostream>
#include <vector>
#include <string>
#include <cstring>
using namespace std;
int arr[1001] = {0,};
int main()
{
int n;
while (cin >> n) {
memset(arr, 0, sizeof(arr));
for (int i=0; i<n; i++) {
string tmp;
cin >> tmp;
for (int j=0; j<tmp.size(); j++) {
arr[i] |= 1 << (tmp[j] - '1');
}
}
vector<int> exp;
exp.push_back(arr[0]);
for (int i=0; i<n; i++) {
bool flag = true;
for (int j=0; j<exp.size(); j++) {
if(arr[i] == exp[j]) flag = false;
}
if (flag) {
exp.push_back(arr[i]);
}
}
cout << exp.size() << '\n';
}
return 0;
}
Originally published November 02, 2021
Latest update November 02, 2021
Related posts :