문제
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다.
문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
출력
문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
예제 입력 1 복사
pikapi
예제 출력 1 복사
YES
예제 입력 2 복사
pipikachu
예제 출력 2 복사
YES
예제 입력 3 복사
pikaqiu
예제 출력 3 복사
NO
예제 입력 4 복사
piika
예제 출력 4 복사
NO
예제 입력 5 복사
chupikachupipichu
예제 출력 5 복사
YES
문제 풀이
단순 문자열 문제입니다. python의 replace 내장함수를 이용해서 해결했습니다.
초기에 s = s.replace(word, "")로 단순 변환해 해결하려했으나, 반례에 부딫혀 실패했습니다.
kpia의 경우 pi가 먼저 빈 문자열로 제거되고, 이후 k와 a 가 ka로 인식돼 YES가 출력됐는데 정답은 NO이므로 이 문제를 해결해야 했습니다.
굳이 문자들을 빈문자열로 바꾸지않고, 이미 지워진 문자는 * 등의 기호로 대체하면 pi가 제거되더라도 k**a 가 되므로 남은 문자가 결합되지 않습니다.
코드
# 14405 피카츄
s = input()
words = ["pi", "ka", "chu"]
for word in words:
s = s.replace(word, "**")
s = s.replace("*", "")
if s == "":
print("YES")
else:
print("NO")
'알고리즘 풀이 > Python' 카테고리의 다른 글
[Python] 소셜 네트워킹 어플리케이션 (백준 7511 파이썬) (1) | 2024.12.10 |
---|---|
[Python] 카드 (백준 11652 파이썬) (0) | 2024.12.10 |
[Python] 스타트와 링크 (백준 5014번 파이썬) (1) | 2024.12.09 |
[Python] Convert 1D Array Into 2D Array (LeetCode 2022번 파이썬) (3) | 2024.10.24 |
[Python] 수들의 합2 (백준 2003번 파이썬) (1) | 2024.10.07 |