๋ฌธ์
๋จ๊ทน์ ์ฌ๋ ๊น์ง๋ฏผ ์ ์๋์ ํ์๋ค์ด ๋๋๋ก์ด๋ฉด ๋ง์ ๋จ์ด๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ ์ง๊ตฌ์จ๋ํ๋ก ์ธํด ์ผ์์ด ๋ น์์ ๊ณง ํ๊ต๊ฐ ๋ฌด๋์ง๊ธฐ ๋๋ฌธ์, ๊น์ง๋ฏผ์ K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์น ์๊ฐ ๋ฐ์ ์๋ค. ๊น์ง๋ฏผ์ด ๊ฐ๋ฅด์น๊ณ ๋ ํ์๋, ํ์๋ค์ ๊ทธ K๊ฐ์ ๊ธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋จ์ด๋ง์ ์ฝ์ ์ ์๋ค. ๊น์ง๋ฏผ์ ์ด๋ค K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์ณ์ผ ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋์ง ๊ณ ๋ฏผ์ ๋น ์ก๋ค.
๋จ๊ทน์ธ์ด์ ๋ชจ๋ ๋จ์ด๋ "anta"๋ก ์์๋๊ณ , "tica"๋ก ๋๋๋ค. ๋จ๊ทน์ธ์ด์ ๋จ์ด๋ N๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ์ด
- brute force๋ก ์ฐพ๊ธฐ (N์ด ์์)
- ์กฐ๊ฑด๋ค์ ์ด์ฉํ์ฌ ์ต๋ํ ์๊ฐ๋ณต์ก๋ ์ค์ด๊ธฐ
์ฝ๋
#include <iostream>
#include <string>
#include <vector>
using namespace std;
vector<string> words;
bool visited[26]; // bit ์ธ ๋ฐ๊ฐ ์ด๊ฑฐ๋ฐ์..
int N, K;
int result = 0;
void getMaxWord(int c ,int count) {
if (count == K) {
int tmpResult = 0;
for (int i = 0; i < words.size(); i++) {
bool flag = true;
for (int j = 0; j < words[i].length(); j++) { // ์ฌ์ฉ ์ ์ฌ๊ธฐ๋ฅผ ์ค์ผ ์ ์์ง๋ง, length๋ ์ต๋ 15
if (!visited[words[i][j] - 'a']) {
flag = false;
break;
}
}
if (flag)
tmpResult++;
}
result = max(tmpResult, result);
return;
}
for (int i = c; i < 26; i++) {
if (!visited[i]) {
visited[i] = true;
getMaxWord(i, count + 1);
visited[i] = false;
}
}
}
int main() {
cin >> N >> K;
// anta, tica => a n t i c (5)
// a(0) c(2) i(8) n(13) t(19)
for (int i = 0; i < N; i++) {
string str; cin >> str;
string midWord;
midWord.assign(str.begin() + 4, str.end() - 4);
words.push_back(midWord);
}
if (K < 5) {
cout << 0;
return 0;
}
if (K >= 26) {
cout << N;
return 0;
}
K -= 5;
visited[0] = true;
visited[2] = true;
visited[8] = true;
visited[13] = true;
visited[19] = true;
getMaxWord(0, 0);
cout << result << '\n';
}
๊ฒฐ๊ณผ
์์ด๋ | ๋ฉ๋ชจ๋ฆฌ | ์๊ฐ | ์ฝ๋ ๊ธธ์ด |
---|---|---|---|
gmldms784 | 2024 | 140 | 1165 |
๊ทผ๋ฐ ๋ bitmap ์์ผ๋๋..
bitmap ์ฌ์ฉํ๋ฉด visited ๋ฐฐ์ด์ bit๋ก ๋ง๋ค์ด์ ์ฐ์ฐํ๋ ๋ฐฉ๋ฒ์ ์ฌ์ฉํ์ฌ ๊ธ์ ํ๋ํ๋ ๋น๊ตํ์ง ์๊ณ ๋นํธ ์ฐ์ฐ์ผ๋ก ์ํ๋ฒณ ํฌํจ ์ฌ๋ถ๋ฅผ ํ๋จํ ์ ์์ ๊ฒ ๊ฐ๋ค.
'Algorithm ๋ฌธ์ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[c++] BOJ 1941 :: ์๋ฌธ๋ ์น ๊ณต์ฃผ (0) | 2021.08.24 |
---|---|
[c++] BOJ 18119 :: ๋จ์ด ์๊ธฐ (0) | 2021.08.10 |
[c++] BOJ 17244 :: ์๋ง๋ค์ฐ์ฐ (0) | 2021.08.02 |
[c++] BOJ 12888 :: ์์ ์ด์ง ํธ๋ฆฌ ๋๋ก ๋คํธ์ํฌ (0) | 2021.07.20 |
[c++] BOJ 18240 :: ์ด์ง ํ์ ํธ๋ฆฌ ๋ณต์ํ๊ธฐ (0) | 2021.07.11 |
Comment