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()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์กฐ๊ธˆ ๋” ์ฝ”๋“œ ๊ธธ์ด๊ฐ€ ์ค„์–ด๋“ค ๊ฒƒ ๊ฐ™๊ธด ํ•˜์ง€๋งŒ ๋– ์˜ค๋ฅด๋Š” ๋Œ€๋กœ ๋นจ๋ฆฌ๋นจ๋ฆฌ ํ‘ธ๋Š” ๊ฒŒ ๋ชฉ์ ์ด์—ˆ๊ธฐ์— ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๊ณ  ํ’€์—ˆ์Šต๋‹ˆ๋‹ค.