본문 바로가기
Algorithm 🧑🏻‍💻/백준(BOJ)

[백준,c++] 12933번 - 오리

by 안주형 2022. 7. 19.

문제

 

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()를 사용하면 조금 더 코드 길이가 줄어들 것 같긴 하지만 떠오르는 대로 빨리빨리 푸는 게 목적이었기에 신경 쓰지 않고 풀었습니다.

댓글