https://www.acmicpc.net/problem/14405
문제
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다.
문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
출력
문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
문제 풀이
문자열 문제.
피카츄가 발음할 수 있는 음절은 pi, ka, chu이다. 따라서 문자열의 앞에서부터 2자 혹은 3자를 잘랐을 때 이 세 문자열이어야 하고, 아니라면 피카츄가 말할 수 있는 문자열이 아니다. substr()로 앞에서 2자 혹은 2자로 자른 후 pi, ka, chu와 같은지 확인하고 나머지 남은 문자열만을 재 저장한다. 이를 반복했을 때 공백이 나오면 피카츄가 발음 가능하고, 세 음절 이외의 다른 문자열이 존재한다면 발음할 수 없다.
아래는 코드.
더보기
#include <iostream>
#include <string>
using namespace std;
int main()
{
cin.tie(NULL);
ios::sync_with_stdio(false);
string str;
cin >> str;
while (str != "")
{
if (str.substr(0, 2) == "pi")
{
str = str.substr(2);
}
else if (str.substr(0, 2) == "ka")
{
str = str.substr(2);
}
else if (str.substr(0, 3) == "chu")
{
str = str.substr(3);
}
else
{
break;
}
}
if (str == "")
{
cout << "YES" << "\n";
}
else
{
cout << "NO" << "\n";
}
return 0;
}
'알고리즘 > 백준' 카테고리의 다른 글
[백준 22353] 헤이카카오 (C++) (0) | 2025.01.21 |
---|---|
[백준 20500] Ezreal 여눈부터 가네 ㅈㅈ (C++) (0) | 2025.01.20 |
[백준 14575] 뒤풀이 (C++) (0) | 2025.01.18 |
[백준 1106] 호텔 (C++) (0) | 2025.01.17 |
[백준 26267] 은?행 털!자 1 (C++) (0) | 2025.01.16 |