-
단어 암기 - 18119Algorithm/BOJ 2020. 3. 23. 11:5512345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364//18119 - 단어암기#include <iostream>using namespace std;int N, M;int count[10000];int full[10000];int bucket[10000][26];void init(){cin >> N >> M;for(int i = 0; i<N; ++i)for(int j = 0; j<26; ++j)bucket[i][j] = -1;string s;for (int i = 0; i < N; ++i){cin >> s;int size = s.size();for (int j = 0; j < size; ++j)bucket[i][s[j] - 'a'] = 1;for (int j = 0; j < 26; ++j)if (bucket[i][j])++count[i], ++full[i];}}int main(){ios_base::sync_with_stdio(0), cin.tie(0), cout.tie(0);init();int flag;char c;int ans = N;for (int i = 0; i < M; ++i){cin >> flag >> c;if (flag == 1){for (int j = 0; j < N; ++j)if (bucket[j][c - 'a'] > 0){bucket[j][c-'a'] = 0;--count[j];if(count[j] + 1 == full[j])--ans;}}else{for (int j = 0; j < N; ++j)if (!bucket[j][c - 'a']){bucket[j][c - 'a'] = 1;++count[j];if (full[j] == count[j])++ans;}}cout << ans << "\n";}}
cs https://www.acmicpc.net/problem/18119
18119번: 단어 암기
준석이는 영어 단어를 외우려고 한다. 사전에는 N가지 단어가 적혀 있다. 모든 단어는 소문자이다. 단어 안에 있는 모든 알파벳을 알 때, 그 단어를 완전히 안다고 한다. 다음과 같은 쿼리들이 주어진다. 1 x : 알파벳 x를 잊는다. 2 x : 알파벳 x를 기억해 낸다. 처음에 모든 알파벳을 기억하는 상태고, 모음은 완벽하게 외웠기 때문에 절대 잊지 않는다. 각 쿼리마다 완전히 알고 있는 단어의 개수를 출력하여라.
www.acmicpc.net
단어 암기
단어 마다 각각의 알파벳 배열을 만들어 애초에 없으면 -1, 해당 알파벳을 외웠으면 1, 까먹었으면 0으로 저장하고 해당 단어에 포함된 알파벳을 모두 기억하면 외운것이고 하나라도 부족하면 까먹은것으로 여겨 해결했습니다.
'Algorithm > BOJ' 카테고리의 다른 글
캔디 분배 - 3955 (0) 2020.03.24 이항 계수 3 - 11401 (0) 2020.03.24 ACM Craft - 1005 (0) 2020.03.22 YouTube - 3117 (0) 2020.03.20 Scoring Hack - 17234 (0) 2020.03.20