10384번: 팬그램백준/문제2024. 5. 17. 01:40
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/10384
언어 : Kotlin
문제 설명 :
팬그램은 모든 알파벳을 적어도 한 번씩을 사용한 영어 문장을 말한다.
다음은 유명한 팬그램 중 하나이다.
The quick brown fox jumps over a lazy dog
더블 팬그램은 모든 알파벳을 적어도 두 번씩은 사용한 문장을 말하고,
트리플 팬그램은 모든 알파벳을 적어도 세 번씩은 사용한 문장을 말한다.
더 이어나갈 수도 있겠지만 시간상 여기까지만 하도록 하겠다.
입력 :
입력은 여러 줄의 테스트케이스들로 이루어진다.
첫째 줄에 테스트케이스의 수 n이 주어진다.
각 테스트케이스는 영어 소문자와 대문자, 특수기호들로 이루어진다.
출력 :
각 케이스마다 한 줄에 하나씩 다음 중 하나를 출력한다.
- 팬그램이 아닐 경우 - Not a pangram
- 팬그램일 경우 - Pangram!
- 더블 팬그램일 경우 - Double pangram!!
- 트리플 팬그램일 경우 - Triple pangram!!!
트리플 팬그램일 경우에는 자연스럽게 팬그램과 더블 팬그램이 되지만, Triple pangram!!!만을 출력한다. 더블 팬그램도 마찬가지이다.
제한 사항 :
- 시간 제한 : 3초
- 메모리 제한 : 256MB
입출력 예 :
입력 | 출력 |
3 The quick brown fox jumps over a lazy dog. The quick brown fox jumps over a laconic dog. abcdefghijklmNOPQRSTUVWXYZ-zyxwvutsrqpon 2013/2014 MLKJIHGFEDCBA |
Case 1: Pangram! Case 2: Not a pangram Case 3: Double pangram!! |
풀이 :
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))
repeat(readLine().toInt()) {
val input = readLine().replace("[^a-zA-Z]".toRegex(), "").map { it.lowercaseChar() }.groupingBy { it }.eachCount().values
when {
input.filter { it >= 3 }.size == 26 -> printLnResult(bw, 3, it + 1)
input.filter { it >= 2 }.size == 26 -> printLnResult(bw, 2, it + 1)
input.filter { it >= 1 }.size == 26 -> printLnResult(bw, 1, it + 1)
else -> printLnResult(bw, 0, it + 1)
}
}
bw.close()
}
fun printLnResult(bw: BufferedWriter, result: Int, index: Int) {
val state = when (result) {
0 -> "Not a pangram"
1 -> "Pangram!"
2 -> "Double pangram!!"
else -> "Triple pangram!!!"
}
bw.appendLine("Case $index: $state")
bw.flush()
}
'백준 > 문제' 카테고리의 다른 글
13419번: 탕수육 (0) | 2024.05.20 |
---|---|
11121번: Communication Channels (0) | 2024.05.20 |
9226번: 도깨비말 (0) | 2024.05.17 |
17176번: 암호해독기 (0) | 2024.05.17 |
11507번: 카드셋트 (0) | 2024.05.16 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!