본문 바로가기

Algorithm/String

(C++) - 백준(BOJ) 15904번 : UCPC는 무엇의 약자일까?

반응형

www.acmicpc.net/problem/15904

 

15904번: UCPC는 무엇의 약자일까?

첫 번째 줄에 알파벳 대소문자, 공백으로 구성된 문자열이 주어진다. 문자열의 길이는 최대 1,000자이다. 문자열의 맨 앞과 맨 끝에 공백이 있는 경우는 없고, 공백이 연속해서 2번 이상 주어지는

www.acmicpc.net

문자의 서순("UCPC")을 지켜서 세주는 문제였습니다.

 

풀이방법

 1. U일 때는 cnt = 1

 2. C가 나왔을 때

   2-1. cnt == 1이면 cnt = 2

   2-2. cnt == 3이면 cnt = 4

 3. P가 나왔을 때 cnt가 2라면 cnt = 3

 4. cnt가 4라면 서순을 지켰고 적절히 축약한다면 UCPC를 만들 수 있습니다.

Code

#include <bits/stdc++.h>
using namespace std;
string s;
int cnt;
int idx;
int main(){
    getline(cin,s);
    
    for(int i = 0; i < s.size(); i++){
        if(s[i]=='U' && !cnt)
            cnt = 1;
        if(s[i] == 'C'){
            if(cnt == 1) cnt = 2;
            if(cnt == 3){
                cnt = 4; 
                break; 
            }
        }
        if(s[i]=='P')
            if(cnt == 2) cnt = 3;
    }
    if(cnt == 4) cout << "I love UCPC\n";
    else cout << "I hate UCPC\n";
}

Test Case

 반례를 직접 작성해 보았습니다. 

 

input

UUPPPCCCCUUUPPCC

답 

I love UCPC