9226번: 도깨비말백준/문제2024. 5. 17. 01:23
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/9226
언어 : Kotlin
문제 설명 :
도깨비말은 언어 유희 중 하나로, 글자를 특정 법칙에 따라 재구성하는 것을 말한다.
영어권에서는 피그라틴어라는 것이 있다. 주로 어린이들이 많이 쓰는 데, 남들에게 무슨 말인지 모르게 하기 위해 종종 쓴다.
여기엔 규칙이 있는데, 맨 앞글자가 모음이 아닐때 까지 맨 앞 글자를 어미로 돌린 후 그 끝에 ay를 붙여서 완성한다. 예를 들면 frog는 ogfray이 된다. 만약 맨 앞자음이 없는 apple과 같은 경우는 끝에 ay만 붙여 appleay가 된다. 또는, 단어에 모음이 없는 경우에도 단어의 끝에 ay만 붙인다.
주어진 단어를 피그라틴어로 바꾸는 프로그램을 작성하시오.
입력 :
한 줄에 하나의 단어씩 주어진다. 그리고 마지막 줄에 #을 입력받고 끝낸다.
주어진 단어는 20자를 넘지 않고 공백없이 소문자로만 이루어져있다. 여기서 모음이란 'a', 'e', 'i', 'o', 'u' 를 말한다.
출력 :
한 줄에 하나씩 피그라틴어를 출력한다.
제한 사항 :
- 시간 제한 : 1초
- 메모리 제한 : 128MB
입출력 예 :
입력 | 출력 |
frog apple pear # |
ogfray appleay earpay |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import java.util.*
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
while (true) {
val queue: Queue<Char> = LinkedList()
val input = readLine().onEach { queue.add(it) }
var result = ""
if (queue.peek() == '#') break
for (i in queue.indices) {
when (queue.peek()) {
'a', 'e', 'i', 'o', 'u' -> {
result = "${queue.joinToString("")}ay"
break
}
else -> {
queue.add(queue.poll())
}
}
}
bw.appendLine(result.ifBlank { "${input}ay" })
bw.flush()
}
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
11121번: Communication Channels (0) | 2024.05.20 |
---|---|
10384번: 팬그램 (0) | 2024.05.17 |
17176번: 암호해독기 (0) | 2024.05.17 |
11507번: 카드셋트 (0) | 2024.05.16 |
1605번: 반복 부분문자열 (0) | 2024.05.16 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!