13022번: 늑대와 올바른 단어백준/문제2024. 7. 4. 16:45
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/13022
언어 : Kotlin
문제 설명 :
다음은 늑대 나라에서 사용하는 올바른 단어에 대한 설명이다.
- 임의의 양의 정수 n에 대해서, 'w'가 n번 나오고, 그 다음에 'o'가 n번, 그 다음에 'l'이 n번, 그 다음에 'f'가 n번 나온 단어는 올바른 단어이다.
- 올바른 단어 두 개를 이은 단어도 올바른 단어이다.
- 1번과 2번 조건으로 만들 수 있는 단어만 올바른 단어이다.
다음은 올바른 단어의 예시이다.
- 1번 규칙으로 만든 "wolf", "wwoollff", "wwwooolllfff"는 모두 올바른 단어이다.
- 2번 규칙으로 만든 "wolfwwoollff"은 올바른 단어이다.
- 2번 규칙을 두 번 써서 만든 "wolfwwoollffwolf"은 올바른 단어이다.
- "wfol"은 올바른 단어가 아니다. (순서가 올바르지 않음)
- "wwolfolf"는 올바른 단어가 아니다. (문자열의 중간에 다른 문자열을 집어 넣음)
- "wwwoolllfff"는 올바른 단어가 아니다. (o가 2번 들어갔다)
입력 :
첫째 줄에 단어가 주어진다. 단어는 w, o, l, f로만 이루어져 있으며, 길이는 50을 넘지 않는다.
출력 :
입력으로 주어진 단어가 올바른 단어인 경우에는 1을, 아니면 0을 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
wolf | 1 |
wwolfolf | 0 |
풀이 :
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))
val count = IntArray(4)
val regex = "(w+o+l+f+)+".toRegex()
var check = false
val input = readLine()
for (i in input.indices) {
val cur = input[i]
when (cur) {
'w' -> count[0]++
'o' -> count[1]++
'l' -> count[2]++
else -> count[3]++
}
if (i < input.lastIndex && cur == 'f' && input[i + 1] == 'w') {
if (count.toList().groupingBy { it }.eachCount().size != 1) {
check = true
break
}
}
}
bw.write(if (!check && input.matches(regex) && count.toList().groupingBy { it }.eachCount().size == 1) "1" else "0")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
23813번: 회전 (0) | 2024.07.05 |
---|---|
25325번: 학생 인기도 측정 (0) | 2024.07.04 |
20114번: 미아 노트 (1) | 2024.07.04 |
28454번: Gift Expire Date (0) | 2024.07.03 |
31822번: 재수강 (0) | 2024.07.03 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!