문제
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()를 사용하면 조금 더 코드 길이가 줄어들 것 같긴 하지만 떠오르는 대로 빨리빨리 푸는 게 목적이었기에 신경 쓰지 않고 풀었습니다.
'Algorithm 🧑🏻💻 > 백준(BOJ)' 카테고리의 다른 글
[백준,c++] 9489번 - 사촌 (0) | 2022.07.26 |
---|---|
[백준,c++] 20924번 - 트리의 기둥과 가지 (0) | 2022.07.24 |
[백준,c++] 20365번 - 블로그2 (0) | 2022.07.24 |
[백준,c++] 1343번 - 폴리오미노 (0) | 2022.07.14 |
[백준,c++] 1967번 - 트리의 지름 (0) | 2022.07.11 |
[백준,c++] 3584번 - 가장 가까운 공통 조상 (0) | 2022.07.11 |
댓글