- ์นด์นด์ค ์ฝํ
- ์ํฐ๋
- BFS
- Python
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- js
- ํ๋ฆฌ์จ๋ณด๋ฉ
- ์๊ณ ๋ฆฌ์ฆ
- ์ด๋ถํ์
- ์ฌ๊ท
- ์นด์นด์ค2021
- ๋นํธ๋งต
- ํธ๋ฆฌ
- ์น๋ฆฐ์ด
- Union-Find
- DP
- go
- ๋ค์ต์คํธ๋ผ
- ๋ฐฑ์ค
- ๋นํธ๋ง์คํน
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- golang
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- C++
- ์์ฝ๋
- nestjs
- DFS
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- LCs
- Today
- Total
Hello Ocean! ๐ผ
[๋ฐฑ์ค/C++] 1062. ๊ฐ๋ฅด์นจ ๋ณธ๋ฌธ
๋ฌธ์
https://www.acmicpc.net/problem/1062
1062๋ฒ: ๊ฐ๋ฅด์นจ
์ฒซ์งธ ์ค์ ๋จ์ด์ ๊ฐ์ N๊ณผ K๊ฐ ์ฃผ์ด์ง๋ค. N์ 50๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , K๋ 26๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์ ๋๋ 0์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๋จ๊ทน ์ธ์ด์ ๋จ์ด๊ฐ ์ฃผ์ด์ง๋ค. ๋จ์ด๋ ์์ด ์๋ฌธ
www.acmicpc.net
๋จ๊ทน์ ์ฌ๋ ๊น์ง๋ฏผ ์ ์๋์ ํ์๋ค์ด ๋๋๋ก์ด๋ฉด ๋ง์ ๋จ์ด๋ฅผ ์ฝ์ ์ ์๋๋ก ํ๋ ค๊ณ ํ๋ค. ๊ทธ๋ฌ๋ ์ง๊ตฌ์จ๋ํ๋ก ์ธํด ์ผ์์ด ๋ น์์ ๊ณง ํ๊ต๊ฐ ๋ฌด๋์ง๊ธฐ ๋๋ฌธ์, ๊น์ง๋ฏผ์ K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์น ์๊ฐ ๋ฐ์ ์๋ค. ๊น์ง๋ฏผ์ด ๊ฐ๋ฅด์น๊ณ ๋ ํ์๋, ํ์๋ค์ ๊ทธ K๊ฐ์ ๊ธ์๋ก๋ง ์ด๋ฃจ์ด์ง ๋จ์ด๋ง์ ์ฝ์ ์ ์๋ค. ๊น์ง๋ฏผ์ ์ด๋ค K๊ฐ์ ๊ธ์๋ฅผ ๊ฐ๋ฅด์ณ์ผ ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ๊ฐ์๊ฐ ์ต๋๊ฐ ๋๋์ง ๊ณ ๋ฏผ์ ๋น ์ก๋ค.
๋จ๊ทน์ธ์ด์ ๋ชจ๋ ๋จ์ด๋ "anta"๋ก ์์๋๊ณ , "tica"๋ก ๋๋๋ค. ๋จ๊ทน์ธ์ด์ ๋จ์ด๋ N๊ฐ ๋ฐ์ ์๋ค๊ณ ๊ฐ์ ํ๋ค. ํ์๋ค์ด ์ฝ์ ์ ์๋ ๋จ์ด์ ์ต๋๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
ํ์ด
๋ชจ๋ ๋จ์ด์ ๊ณตํต๋๋ anta, tica๋ถ๋ถ์ ์๋ฅด๊ณ , ํด๋น ์ํ๋ฒณ 5๊ฐ๋ ํญ์ ์๊ณ ์๋ค๊ณ ์ค์ ํ ๋ค,
DFS๋ฅผ ์ด์ฉํด์ k๊ฐ์ ์ํ๋ฒณ์ ๋ฝ๋๋ค (์กฐํฉ)
k๊ฐ๋ฅผ ๋ค ๋ฝ์์ ๋์๋, ํด๋น ์ํ๋ฒณ๋ค์ ์๊ณ ์์ ๋ ์ฝ์ ์ ์๋ ๋จ์ด์ ์๋ฅผ ๊ณ์ฐํด์
์ต์ข ์ ์ผ๋ก ์ฝ์ ์ ์๋ ๋จ์ด์ ์์ ์ต๋๊ฐ์ ๊ตฌํ๊ฒ ๋๋ค.
๋นํธ๋งต์ ์ฐ๋ฉด ์ข์ ๊ฒ ๊ฐ์ ๋ฌธ์ ์ด๊ธด ํ๋ฐ, ์ํ๋ฒณ bool ๋ฐฐ์ด์ ์ด์ฉํด์๋ ํ ์ ์์๋ค. ๋นํธ๋งต์ ์ด์ฉํ๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ค์ด๋ค๊ฒ ์ง..?
์ฝ๋
#include<iostream>
#include<string>
#include<vector>
#include<cstring>
#include<algorithm>
using namespace std;
int N, K, max_count;
bool alphabet[26];
vector<string> words;
int canReadNum() {
bool isCanRead;
int count = 0;
for (int i = 0; i < words.size(); i++){
isCanRead = true;
string str = words[i];
for (int j = 0; j < str.length(); j++){
if (alphabet[str[j] - 'a'] == false){
isCanRead = false;
break;
}
}
if (isCanRead == true){
count++;
}
}
return count;
}
void DFS_combi(int index, int count){
if (count == K){ // k๊ฐ ๋ค๋ฝ์ผ๋ฉด ํด๋น ์กฐํฉ์ผ๋ก ์ฝ์ ์ ์๋ ๋จ์ด ๊ฐ์ ๊ตฌํ๊ธฐ
int temp_count = canReadNum();
max_count = max(max_count, temp_count);
return;
}
for (int i = index; i < 26; i++){
if (alphabet[i] == true) continue;
alphabet[i] = true;
DFS_combi(i, count + 1);
alphabet[i] = false;
}
}
int main(void){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
cin >> N >> K;
if (K < 5) {
cout << 0 << endl;
return 0;
}
K -= 5; // a,n,t,i,c 5๊ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์
for (int n = 0;n < N;n++) {
string input;
cin >> input;
input = input.substr(4, input.size() - 8); //๋ชจ๋ ๋จ์ด์ ๊ณตํต๋๋ ๋ถ๋ถ ์ ๊ฑฐ
words.push_back(input);
}
// a,n,t,i,c 5๊ฐ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ์๊ณ ์์
alphabet['a' - 'a'] = true;
alphabet['n' - 'a'] = true;
alphabet['t' - 'a'] = true;
alphabet['i' - 'a'] = true;
alphabet['c' - 'a'] = true;
DFS_combi(0, 0);
cout << max_count << endl;
return 0;
}
๊ฒฐ๊ณผ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/C++] 1405. ๋ฏธ์น ๋ก๋ด (0) | 2021.08.17 |
---|---|
[๋ฐฑ์ค/C++] 17182. ์ฐ์ฃผ ํ์ฌ์ (0) | 2021.08.17 |
[๋ฐฑ์ค/C++] 18119. ๋จ์ด ์๊ธฐ (0) | 2021.08.10 |
[C++/๋ฐฑ์ค] 17244. ์๋ง๋ค์ฐ์ฐ (0) | 2021.08.03 |
[๋ฐฑ์ค/C++] 13701. ์ค๋ณต ์ ๊ฑฐ (0) | 2021.08.03 |