(코드)BOJ – 14405 피카츄

문제

https://www.acmicpc.net/problem/14405

#14405: 피카츄

피카츄는 “pi”, “ka”, “chu”를 발음할 수 있습니다. 따라서 피카츄는 이 세 음절이 결합된 단어만 발음할 수 있습니다. 예를 들어 “피카피”와 “피카츄”. 문자열 S가 주어지면 피카츄가 발음할 수 있는 문구

www.acmicpc.net

답변

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

/**
 * Q. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
 * - 피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다.
 */
public class Main {

    public static void main(String() args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        // 첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
        String s = br.readLine();

        // 문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
        boolean flag = true;
        
        for (int i = 0; i < s.length(); i++) {
            if ((i < s.length() - 1) && (s.charAt(i) == 'p' && s.charAt(i + 1) == 'i')) i++;
            else if ((i < s.length() - 1) && (s.charAt(i) == 'k' && s.charAt(i + 1) == 'a')) i++;
            else if ((i < s.length() - 2) && (s.charAt(i) == 'c' && s.charAt(i + 1) == 'h' && s.charAt(i + 2) == 'u')) i += 2;
            else {
                flag = false;
                break;
            }
        }

        if (flag) System.out.println("YES");
        else System.out.println("NO");
    }

}