문제
https://www.acmicpc.net/problem/18119
걸린 시간
00 : 42 : 55
풀이
C++
#include <bits/stdc++.h>
#define INF 1e9
#define all(c) c.begin(), c.end()
typedef long long ll;
typedef unsigned long long ull;
using namespace std;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
int n, m;
cin >> n >> m;
string s;
vector<int> dic;
for(int i = 0; i < n; i++){
cin >> s;
int tmp = 0;
for(int j = 0; j < s.size(); j++)
tmp |= 1<<(int)s[j]-0x61;
dic.push_back(tmp);
}
int memo = 0;
for(int i = 0; i < 26; i++)
memo |= 1<<i;
int o;
char x;
for(int i = 0; i < m; i++){
cin >> o >> x;
if(o == 1) memo ^= 1<<(int)x-0x61;
else memo |= 1<<(int)x-0x61;
int ans = 0;
for(int j = 0; j < n; j++)
if((dic[j]&memo) == dic[j]) ans++;
cout << ans << "\n";
}
return 0;
}
완전히 알고 있는 단어의 개수를 계산하는 과정에서 문제가 생겨 시간이 조금 걸렸다.
비트 논리 연산자 &
는 관계 연산자 ==
보다 우선순위가 낮다.
'Baekjoon' 카테고리의 다른 글
Baekjoon 12851번 숨바꼭질 2 (0) | 2020.12.27 |
---|---|
Baekjoon 1753번 최단경로 (0) | 2020.12.26 |
Baekjoon 9935번 문자열 폭팔 (0) | 2020.12.25 |
Baekjoon 1504번 특정한 최단 경로 (0) | 2020.12.10 |
Baekjoon 2638번 치즈 (0) | 2020.12.09 |
댓글