14647번: 준오는 조류혐오야!!백준/문제2024. 4. 22. 04:20
Table of Contents
문제 출처 : https://www.acmicpc.net/problem/14647
언어 : Kotlin
문제 설명 :
심술쟁이 해커 임준오(동탄 주민)는 새를 싫어한다. 특히 비둘기를 싫어한다.
준오는 수업시간에 옆자리 짝꿍과 빙고게임을 하기로 했다. 준오와 짝꿍은 각자 원하는 숫자를 n×m 격자의 빙고판에 적었다. 그러고는 서로의 빙고판을 교환했는데, 준오는 짝꿍의 빙고판을 확인하자마자 화가 치밀어 올랐다. 짝꿍의 빙고판에 9가 들어간 숫자들이 엄청 많아서 비둘기가 떠올랐기 때문이다. 그래서 준오는 짝꿍의 빙고판을 부숴버렸다.
하지만 준오의 폭동에는 특별한 룰이 있다. 바로 모든 행과 열을 통틀어서 9가 가장 많이 쓰여 있는 행 또는 열을 단 하나만 부수는 것이다!
빙고판을 부수는 순간 준오와 선생님의 눈이 마주쳤고, 선생님은 빙고판에 남아있는 9의 개수만큼 준오를 때리기로 했다. 준오는 몇 대를 맞아야 할까?
입력 :
첫째 줄에 직사각형 빙고판의 크기를 뜻하는 n(1 ≤ n ≤ 500)과 m(1 ≤ m ≤ 500)이 주어진다. 다음 줄부터 n개의 줄에 걸쳐 각 줄마다 m개의 숫자들이 주어진다. 이는 크기가 n×m인 짝꿍의 빙고판의 상태를 나타내며, 빙고판에는 10,000 이하의 음이 아닌 정수가 적힌다.
출력 :
준오가 몇 대 맞아야 하는지 출력한다.
제한 사항 :
- 시간 제한 : 2초
- 메모리 제한 : 256MB
입출력 예 :
입력 | 출력 |
3 4 1 2 3 9 4 5 9 6 9 7 8 9 |
2 |
4 4 11 12 19 14 99 39 14 90 13 47 81 99 32 72 29 66 |
4 |
풀이 :
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, m) = readLine().split(" ").map { it.toInt() }
val board = mutableListOf<List<String>>()
var allCount = 0
repeat(n) {
board += readLine().split(" ").map {
allCount += it.count { it == '9' }
it
}
}
val cnt = IntArray(2)
board.forEachIndexed { index, list ->
cnt[0] = cnt[0].coerceAtLeast(list.joinToString("").count { it == '9' })
}
for (i in 0 until m) {
val sb = StringBuilder()
for (j in 0 until n) {
sb.append(board[j][i])
}
cnt[1] = cnt[1].coerceAtLeast(sb.toString().count { it == '9' })
}
allCount -= cnt.max()
bw.write("$allCount")
bw.flush()
bw.close()
}
'백준 > 문제' 카테고리의 다른 글
18238번: ZOAC 2 (0) | 2024.04.23 |
---|---|
9046번: 복호화 (0) | 2024.04.23 |
16719번: ZOAC (0) | 2024.04.22 |
9248번: Suffix Array (0) | 2024.04.22 |
1544번: 사이클 단어 (0) | 2024.04.19 |
@스몰스테핑 :: 작은 발걸음
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!