Algorithm ๐ง๐ป๐ป/๋ฐฑ์ค(BOJ)
[๋ฐฑ์ค,c++] 12933๋ฒ - ์ค๋ฆฌ
dkswnkk
2022. 7. 19. 23:07
๋ฌธ์
12933๋ฒ: ์ค๋ฆฌ
์ฒซ์งธ ์ค์ ์์ ์ด๊ฐ ๋ น์ํ ์๋ฆฌ๊ฐ ์ฃผ์ด์ง๋ค. ์๋ฆฌ์ ๊ธธ์ด๋ 5๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 2500๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ฐ์์ด๊ณ , 'q','u','a','c','k'๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค.
www.acmicpc.net
์ฝ๋
#include <iostream>
#include <vector>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(0);
string inp; cin>>inp;
int ans = 0;
for(int i=0; i<inp.length(); i++){
bool flag = true;
char before = inp[i];
vector<int>index;
if(inp[i] == 'q'){
index.push_back(i);
for(int k=i+1; k<inp.length(); k++){
if(before == '-'){
if(inp[k]=='q'){
before = 'q';
index.push_back(k);
}
}
else if(before == 'q' && inp[k] == 'u'){
index.push_back(k);
before = 'u';
}
else if(before == 'u' && inp[k] == 'a') {
index.push_back(k);
before = 'a';
}
else if(before == 'a' && inp[k] == 'c'){
index.push_back(k);
before = 'c';
}
else if(before == 'c' && inp[k] == 'k'){
index.push_back(k);
if(index.size()==5){
for (int idx: index) inp[idx] = '-';
if(flag) ans++;
flag = false;
before = '-';
index.clear();
}
}
}
index.clear();
}
}
for(int i=0; i<inp.length(); i++){
if(inp[i]!='-'){
ans = 0;
break;
}
}
if(ans==0) cout<<-1;
else cout<<ans;
}
ํ์ด
๋จ์ ๊ตฌํ ๋ฌธ์ ์์ต๋๋ค. ๋ฌธ์์ด์ ์ ๋ ฅ ์ต๋ ๊ธธ์ด๊ฐ 2500์ด๊ธฐ ๋๋ฌธ์ O(n^2)์ผ๋ก ํด๊ฒฐํ ์ ์์ด์ ๋ธ๋ฃจํธํฌ์ค๋ก ํด๊ฒฐํ์ต๋๋ค.
์ฐจ๋ก๋๋ก quack ๊ฐ ๋ง๋ค์ด์ง๋ ๋ฌธ์๋ค์ '-'๋ก ์นํํด๊ฐ๋ฉฐ ์ฒ๋ฆฌํด์ฃผ์์ต๋๋ค. indexOf()๋ฅผ ์ฌ์ฉํ๋ฉด ์กฐ๊ธ ๋ ์ฝ๋ ๊ธธ์ด๊ฐ ์ค์ด๋ค ๊ฒ ๊ฐ๊ธด ํ์ง๋ง ๋ ์ค๋ฅด๋ ๋๋ก ๋นจ๋ฆฌ๋นจ๋ฆฌ ํธ๋ ๊ฒ ๋ชฉ์ ์ด์๊ธฐ์ ์ ๊ฒฝ ์ฐ์ง ์๊ณ ํ์์ต๋๋ค.