문제 출처 : https://www.acmicpc.net/problem/12933
언어 : Kotlin
문제 설명 :
오리의 울음 소리는 "quack"이다. 올바른 오리의 울음 소리는 울음 소리를 한 번 또는 그 이상 연속해서 내는 것이다. 예를 들어, "quack", "quackquackquackquack", "quackquack"는 올바른 오리의 울음 소리이다.
영선이의 방에는 오리가 있는데, 문제를 너무 열심히 풀다가 몇 마리의 오리가 있는지 까먹었다.
갑자기 영선이의 방에 있는 오리가 울기 시작했고, 이 울음소리는 섞이기 시작했다. 영선이는 일단 울음소리를 녹음했고, 나중에 들어보면서 총 몇 마리의 오리가 있는지 구해보려고 한다.
녹음한 소리는 문자열로 나타낼 수 있는데, 한 문자는 한 오리가 낸 소리이다. 오리의 울음 소리는 연속될 필요는 없지만, 순서는 "quack"이어야 한다. "quqacukqauackck"과 같은 경우는 두 오리가 울었다고 볼 수 있다.
영선이가 녹음한 소리가 주어졌을 때, 영선이 방에 있을 수 있는 오리의 최소 개수를 구하는 프로그램을 작성하시오.
입력 :
첫째 줄에 영선이가 녹음한 소리가 주어진다. 소리의 길이는 5보다 크거나 같고, 2500보다 작거나 같은 자연수이고, 'q','u','a','c','k'로만 이루어져 있다.
출력 :
영선이 방에 있을 수 있는 오리의 최소 수를 구하는 프로그램을 작성하시오. 녹음한 소리가 올바르지 않은 경우에는 -1을 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
quqacukqauackck | 2 |
kcauq | -1 |
quackquackquackquackquackquackquackquackquackquack | 1 |
qqqqqqqqqquuuuuuuuuuaaaaaaaaaacccccccccckkkkkkkkkk | 10 |
quqaquuacakcqckkuaquckqauckack | 3 |
quackqauckquack | -1 |
풀이 :
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
import kotlin.system.exitProcess
fun main() = with(BufferedReader(InputStreamReader(System.`in`))) {
val bw = BufferedWriter(OutputStreamWriter(System.out))
val input = readLine().toCharArray()
val check = BooleanArray(input.size)
val duck = arrayOf('q', 'u', 'a', 'c', 'k')
if (input[0] != 'q' || input.size % 5 != 0) wrongToExit(bw)
val cnt = IntArray(2)
for (i in input.indices) {
val list = arrayListOf<Char>()
for (j in i until input.size) {
if (!check[j] && input[j] == duck[cnt[0]]) {
cnt[0]++
list.add(input[j])
check[j] = true
if (cnt[0] == 5) cnt[0] = 0
}
}
if (list.size != 0) {
if (list[list.lastIndex] != 'k') wrongToExit(bw) else cnt[1]++
}
}
bw.write("${cnt[1]}")
bw.flush()
bw.close()
}
fun wrongToExit(bw: BufferedWriter) {
bw.write("-1")
bw.flush()
bw.close()
exitProcess(0)
}
'백준 > 문제' 카테고리의 다른 글
9081번: 단어 맞추기 (0) | 2024.04.17 |
---|---|
1340번: 연도 진행바 (0) | 2024.04.17 |
9342번: 염색체 (0) | 2024.04.16 |
5357번: Dedupe (0) | 2024.04.16 |
23303번: 이 문제는 D2 입니다. (0) | 2024.04.15 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!