- nestjs
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- Union-Find
- ๋ฐฑ์ค
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ํธ๋ฆฌ
- ์ฌ๊ท
- ์์ฝ๋
- C++
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- ํ๋ฆฌ์จ๋ณด๋ฉ
- DP
- golang
- ๋นํธ๋งต
- ์น๋ฆฐ์ด
- ๋นํธ๋ง์คํน
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ์นด์นด์ค ์ฝํ
- ์ด๋ถํ์
- LCs
- ์ํฐ๋
- ์นด์นด์ค2021
- go
- ๋ค์ต์คํธ๋ผ
- BFS
- DFS
- js
- Python
- ์๊ณ ๋ฆฌ์ฆ
- Today
- Total
Hello Ocean! ๐ผ
[๋ฐฑ์ค/C++] 18119. ๋จ์ด ์๊ธฐ ๋ณธ๋ฌธ
๋ฌธ์
https://www.acmicpc.net/problem/18119
์ค์์ด๋ ์์ด ๋จ์ด๋ฅผ ์ธ์ฐ๋ ค๊ณ ํ๋ค. ์ฌ์ ์๋ N๊ฐ์ง ๋จ์ด๊ฐ ์ ํ ์๋ค. ๋ชจ๋ ๋จ์ด๋ ์๋ฌธ์์ด๋ค. ๋จ์ด ์์ ์๋ ๋ชจ๋ ์ํ๋ฒณ์ ์ ๋, ๊ทธ ๋จ์ด๋ฅผ ์์ ํ ์๋ค๊ณ ํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฟผ๋ฆฌ๋ค์ด ์ฃผ์ด์ง๋ค.
- 1 x : ์ํ๋ฒณ x๋ฅผ ์๋๋ค.
- 2 x : ์ํ๋ฒณ x๋ฅผ ๊ธฐ์ตํด ๋ธ๋ค.
์ฒ์์ ๋ชจ๋ ์ํ๋ฒณ์ ๊ธฐ์ตํ๋ ์ํ๊ณ , ๋ชจ์์ ์๋ฒฝํ๊ฒ ์ธ์ ๊ธฐ ๋๋ฌธ์ ์ ๋ ์์ง ์๋๋ค.
๊ฐ ์ฟผ๋ฆฌ๋ง๋ค ์์ ํ ์๊ณ ์๋ ๋จ์ด์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ.
ํ์ด
๊ธธ์ด 26์ง๋ฆฌ ๋นํธ๋งต์ ์ด์ฉํด์ ํ์ดํ๋ค. (์ํ๋ฒณ ๊ฐ์๊ฐ 26์ด๊ธฐ ๋๋ฌธ)
์ฒ์์๋ ๋ชจ๋ ์ํ๋ฒณ์ ๊ธฐ์ตํ๊ณ ์์ผ๋ฏ๋ก ์ ๋ถ 1๋ก ์ค์ ํ๊ณ
ํน์ ์ํ๋ฒณ์ ์์ ๋๋, ํด๋น ์๋ฆฌ์ ๋นํธ๋ฅผ 0์ผ๋ก ๋ฐ๊ฟ์ฃผ๊ณ
๋ค์ ๊ธฐ์ตํ ๋๋, ํด๋น ์๋ฆฌ์ ๋นํธ๋ฅผ 1๋ก ๋ฐ๊พธ์ด์ฃผ์๋ค.
(a=0, b=1๋ฒ ์งธ ์๋ฆฌ ๋นํธ)
๊ธฐ์ตํ๋ ์ฐ์ฐ (1๋ก ๋ฐ๊พธ๋ ์ฐ์ฐ)์ or๋ก ํธํ๊ฒ ํ๋๋ฐ,
์์ด๋ฒ๋ฆฌ๋ ์ฐ์ฐ (0์ผ๋ก ๋ฐ๊พธ๋ ์ฐ์ฐ)์ ํ์ค์ ์ด๋ป๊ฒ ์ฒ๋ฆฌํด์ผํ ์ง ๋ชจ๋ฅด๊ฒ ์ด์ if๋ฅผ ํตํด ํด๋น ์๋ฆฌ ๋นํธ๊ฐ 1์ด๋ฉด, ํด๋น ์๋ฅผ ๋นผ๋ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ์ฐํ๋ค.
N๊ฐ์ ๋จ์ด๋ค์ ์
๋ ฅ๋ฐ์ ๋ ๋นํธ๋งต์ผ๋ก ๋ณํํด์ ์ ์ฅํ๊ณ ,
๊ทธ๋ฆฌ๊ณ ๋งค๋ฒ ์ฟผ๋ฆฌ๋ง๋ค N๊ฐ์ ๋จ์ด๋ฅผ ๋ชจ๋ ํ์ธํด์ ํด๋น ์ฟผ๋ฆฌ์ ๊ธฐ์ตํ๊ณ ์๋ ๋จ์ด์ ๊ฐ์๋ฅผ ์ธ์ฃผ์๋ค.
[์๋ฌธ์ ]
๋ค ํ๊ณ ๋ฌธ์ ๋ฅผ ๋ค์๋ณด๋, ๋ชจ์์ ์ ๋๋ก ์์ง ์๋๋ค๋ ์กฐ๊ฑด์ด ์์๋ค. ์ด ๋ถ๋ถ์ ๋ฐ๋ก ์ฒ๋ฆฌํด์ฃผ์ง ์์๋๋ฐ ์ ๋ต์ด ๋์จ๊ฑธ ๋ณด๋, ์์ ๋ชจ์์ ์๋ ์ฟผ๋ฆฌ๊ฐ ํ
์คํธ์ผ์ด์ค์ ์๋ค์ด์ค๋ ๊ฒ ๊ฐ๋ค.
์ฝ๋
#include <iostream>
#include <string>
using namespace std;
int bitmap = (1 << 27)-1;
int N, M;
int bitmaps[10001];
int main() {
scanf("%d %d", &N, &M);
string word;
for (int n = 0;n < N;n++) {
cin >> word;
int bm = 0;
for (int i = 0;i < word.size();i++) {
int temp = word[i]-'a';
bm = bm | (1 << temp);
}
bitmaps[n] = bm;
}
char x; int o;
for (int m = 0;m < M;m++) {
scanf("%d %c", &o, &x);
int idx = x - 'a';
int temp = (1 << idx);
if (o == 1) { // x ์๊ธฐ
if ((bitmap & temp) == temp) {
bitmap -= temp;
}
}
else if (o == 2) { // x ๊ธฐ์ตํ๊ธฐ
bitmap = bitmap | temp;
}
// ๋จ์ด์ค์ ๋ช ๊ฐ ๊ธฐ์ตํ๋์ง
int cnt = 0;
for (int n = 0;n < N;n++) {
int res = bitmap & bitmaps[n];
if (res == bitmaps[n])
cnt++;
}
printf("%d\n", cnt);
}
return 0;
}
๊ฒฐ๊ณผ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 17182. ์ฐ์ฃผ ํ์ฌ์ (0) | 2021.08.17 |
---|---|
[๋ฐฑ์ค/C++] 1062. ๊ฐ๋ฅด์นจ (0) | 2021.08.10 |
[C++/๋ฐฑ์ค] 17244. ์๋ง๋ค์ฐ์ฐ (0) | 2021.08.03 |
[๋ฐฑ์ค/C++] 13701. ์ค๋ณต ์ ๊ฑฐ (0) | 2021.08.03 |
[C/C++] scanf, scanf_s๋ก ์ ๋ ฅ๋ฐ์ ๋ "\n" ์ด ์์ฌ ๋ค์ด๊ฐ๋ ๋ฌธ์ (0) | 2021.07.30 |