728x90
https://www.acmicpc.net/problem/1749
// 백준 - 점수따먹기(1749)
import java.io.BufferedReader
import java.io.InputStreamReader
import java.util.StringTokenizer
import kotlin.math.max
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
var st = StringTokenizer(br.readLine())
val N = st.nextToken().toInt()
val M = st.nextToken().toInt()
val map = Array(N + 1, {Array(M + 1, {0})})
for(i: Int in 1..N) {
st = StringTokenizer(br.readLine())
for(j: Int in 1..M) {
map[i][j] = st.nextToken().toInt() + map[i - 1][j] + map[i][j-1] - map[i - 1][j - 1]
}
}
var answer = 200 * 200 * -10000 // 최소값
// 부분 행렬 가로, 세로 길이
for(w: Int in 1..N) {
for(h: Int in 1..M) {
// 부분 행렬 끝점
for(rowF: Int in w..N) {
for(colF: Int in h..M) {
val cur = map[rowF][colF] - map[rowF - w][colF] - map[rowF][colF - h] + map[rowF - w][colF - h]
answer = max(answer, cur)
}
}
}
}
print(answer)
}
/*
0011
0011
2233
2233
0,0부터 x, y까지의 누적합을 각각 구해둠
3으로 된 부분의 누적합 = 전체 누적 - (0 + 1) - (0 + 2) + 0
*/
728x90
'Programming > Kotlin' 카테고리의 다른 글
[백준/Kotlin] 이모티콘(14226) (0) | 2024.06.24 |
---|---|
[LeetCode/Kotlin] 11. Container With Most Water (0) | 2024.06.24 |
[백준/Kotlin] 경사로(14890) (0) | 2024.05.17 |
[백준/Kotlin] 여왕벌(10836) - 서브태스크4 해결 못함 (0) | 2024.05.17 |
[백준/Kotlin] 공유기 설치(2110) (0) | 2024.05.15 |