Baekjoon

Baekjoon 18119번 담어 암기

ppwag 2020. 12. 25. 20:43

문제

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

댓글