문제 출처 : https://www.acmicpc.net/problem/14174
언어 : Kotlin
문제 설명 :
Farmer John is trying to teach his cows to read by giving them a set of N spelling boards typically used with preschoolers (1≤N≤100). Each board has a word and an image on each side. For example, one side might have the word 'cat' along with a picture of a cat, and the other side might have the word 'dog' along with a picture of a dog. When the boards are lying on the ground, N words are therefore shown. By flipping over some of the boards, a different set of N words can be exposed.
To help the cows with their spelling, Farmer John wants to fashion a number of wooden blocks, each embossed with a single letter of the alphabet. He wants to make sufficiently many blocks of each letter so that no matter which set of N words is exposed on the upward-facing boards, the cows will be able to spell all of these words using the blocks. For example, if N=3 and the words 'box', 'cat', and 'car' were facing upward, the cows would need at least one 'b' block, one 'o' block, one 'x' block, two 'c' blocks, two 'a' blocks, one 't' block, and one 'r' block.
Please help the Farmer John determine the minimum number of blocks for each letter of the alphabet that he needs to provide, so that irrespective of which face of each board is showing, the cows can spell all N visible words.
입력 :
Line 1 contains the integer N.
The next N lines each contain 2 words separated by a space, giving the two words on opposite sides of a board. Each word is a string of at most 10 lowercase letters.
출력 :
Please output 26 lines. The first output line should contain a number specifying the number of copies of 'a' blocks needed. The next line should specify the number of 'b' blocks needed, and so on.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 512MB
입출력 예 :
입력 | 출력 |
3 fox box dog cat car bus |
3 fox box dog cat car bus |
풀이 :
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 n = readLine().toInt()
val result = IntArray(26)
repeat(n) {
val (a, b) = readLine().split(" ")
val count = Array(2) { IntArray(26) }
a.forEach { count[0][it - 'a']++ }
b.forEach { count[1][it - 'a']++ }
for (i in 0 until 26) {
result[i] += maxOf(count[0][i], count[1][i])
}
}
result.forEach { bw.write("$it\n") }
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
16205번: 변수명 (1) | 2024.07.25 |
---|---|
10932번: SHA-512 (0) | 2024.07.24 |
5949번: Adding Commas (0) | 2024.07.23 |
26731번: Zagubiona litera (0) | 2024.07.23 |
5211번: 가단조와 다장조 (0) | 2024.07.23 |
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!