문제
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다.
문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
출력
문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
접근 방식
처음에는 pi, ka, chu를 문자열에서 제거하는 방식으로 코드를 작성하였다
즉, erase를 사용해 문자를 제거하였지만 틀렸습니다라고 떴다
따라서 굳이 문자열을 삭제하지 않고도
현재 인덱스에서 각 부분 문자가 pi, ka, chu가 아니면 바로 NO를 리턴하고
맞다면 다음 부분 문자를 확인할 수 있도록 하였다
코드
#include<bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false); cin.tie(0);
string str; cin>>str;
int i=0;
while(i < str.length()){
if(str.substr(i,2) == "ka") i += 2;
else if(str.substr(i,2) == "pi") i += 2;
else if(str.substr(i,3) == "chu") i += 3;
else {
cout<<"NO";
return 0;
}
}
cout<<"YES";
}

'Algorithm' 카테고리의 다른 글
[BOJ] 1로 만들기 1463번 C++ (0) | 2025.01.08 |
---|---|
[BOJ] 파스칼 삼각형 15489번 C++ (0) | 2025.01.08 |
[BOJ] 무한 문자열 12871번 C++ (0) | 2024.12.22 |
[BOJ] 회문 17609번 C++ (0) | 2024.12.19 |
[BOJ] 연산자 끼워넣기 (2) 15658번 C++ (0) | 2024.12.06 |