14405번: 피카츄백준/문제2024. 2. 26. 12:55
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/14405
언어 : Kotlin
문제 설명 :
피카츄는 "pi", "ka", "chu"를 발음할 수 있다. 따라서, 피카츄는 이 세 음절을 합친 단어만 발음할 수 있다. 예를 들면, "pikapi"와 "pikachu"가 있다.
문자열 S가 주어졌을 때, 피카츄가 발음할 수 있는 문자열인지 아닌지 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 문자열 S가 주어진다. 문자열은 알파벳 소문자로 이루어진 문자열이며, 길이는 5000을 넘지 않는다.
출력 :
문자열 S가 "pi", "ka", "chu"를 이어 붙여서 만들 수 있으면 "YES"를 아니면 "NO"를 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
pikapi | YES |
pipikachu | YES |
pikaqiu | NO |
piika | NO |
chupikachupipichu | YES |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
var idx = 0
var result = false
val input = readLine()
while (idx < input.length) {
if (input[idx] == 'p') {
if (idx + 1 >= input.length) break
if (input[idx + 1] == 'i') {
if (idx + 2 < input.length) idx += 2 else { result = true; break }
} else {
break
}
}
if (input[idx] == 'k') {
if (idx + 1 >= input.length) break
if (input[idx + 1] == 'a') {
if (idx + 2 < input.length) idx += 2 else { result = true; break }
} else {
break
}
}
if (input[idx] == 'c') {
if (idx + 2 >= input.length) break
if (input[idx + 1] == 'h' && input[idx + 2] == 'u') {
if (idx + 3 < input.length) idx += 3 else { result = true; break }
} else {
break
}
}
if (input[idx] != 'p' && input[idx] != 'k' && input[idx] != 'c') {
break
}
}
bw.write(if (result) "YES" else "NO")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
2954번: 창영이의 일기장 (1) | 2024.02.27 |
---|---|
17863번: FYI (1) | 2024.02.27 |
2671번: 잠수함식별 (1) | 2024.02.26 |
2852번: NBA 농구 (0) | 2024.02.22 |
1235번: 학생 번호 (0) | 2024.02.21 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!