어흥

[백준 14405] 피카츄 (C++) 본문

알고리즘/백준

[백준 14405] 피카츄 (C++)

라이언납시오 2020. 3. 16. 20:18
728x90
반응형

문제 링크: https://www.acmicpc.net/problem/14405

 

14405번: 피카츄

피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다. 문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.

www.acmicpc.net

1. 주의할 점

- 3가지 단어 말고 다른 문자로 시작해도 NO 출력시켜야한다.

 

2. 구현

- Idx=0을 기준으로 입력받은 String에서 Idx번째 문자가 셋중 하나와 같으면 나머지 또한 같은지 비교한다.

- 셋과 모두 다르다면 While문을 빠져오도록 설계한다.

 

#include <iostream>
#include <string>
using namespace std;

int main() {
	ios_base::sync_with_stdio(false);cin.tie(NULL); cout.tie(NULL);
	bool avail = true;
	string str, s;
	cin >> str;
	int idx = 0;
	while (idx < str.size()) {
		if (str[idx] == 'p') {
			s = str.substr(idx, 2);
			if ("pi" == s) 
				idx += s.size();
			else{
				avail = false;
				break;
			}
		}
		else if (str[idx] == 'k') {
			s = str.substr(idx, 2);
			if ("ka" == s)
				idx += s.size();
			else {
				avail = false;
				break;
			}
		}
		else if (str[idx] == 'c') {
			s = str.substr(idx, 3);
			if ("chu" == s)
				idx += s.size();
			else {
				avail = false;
				break;
			}
		}
		else {
			avail = false;
			break;
		}
	}
	if (avail) cout << "YES";
	else cout << "NO";
	system("pause");
	return 0;
}
728x90
반응형
Comments