728x90
https://www.acmicpc.net/problem/2628
문제 접근
종이를 배열로 표현해서 자른 부분을 1로 처리한 다음 연속되는 0의 최대값을 곱해주면 됨
-> 어차피 한줄 끝까지 자르니깐 이차원 배열이 아닌 가로세로 각각 일차원 배열로 선언해서 연속되는 0의 개수의 최대값을 구하면 될듯?
정답 코드
import java.util.*
fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
val n = nextInt() //가로
val m = nextInt() //세로
val cutN = IntArray(n + 1)
val cutM = IntArray(m + 1)
val cutNum = nextInt()
for (i in 0 until cutNum) {
val xy = nextInt() //자를 선 가로세로 구분
val wh = nextInt() //자르는 번호
if (wh == 0) { //안 자르는 경우
continue
}
if (xy == 0) { //가로로 자름
cutM[wh] = 1
} else if (xy == 1) { //세로로 자름
cutN[wh] = 1
}
}
var maxX = 0
var temp = 0
//배열에서 연속되는 0의 최대값을 구하면 됨
for (j in 1..n) {
temp++
if (cutN[j] == 1 || j == n) {
maxX = Math.max(temp, maxX)
temp = 0
}
}
var maxY = 0
temp = 0
for (j in 1..m) {
temp++
if (cutM[j] == 1 || j == m) {
maxY = Math.max(temp, maxY)
temp = 0
}
}
print(maxX * maxY)
}
'알고리즘 > 백준 문제풀이' 카테고리의 다른 글
백준 2246 - 콘도 선정(Kotlin) (0) | 2023.01.31 |
---|---|
백준 1051-숫자 정사각형(Kotlin) (0) | 2023.01.31 |
백준 2563 - 색종이(Kotlin) (0) | 2023.01.30 |
백준 1418 k-세준수(Kotlin) (0) | 2023.01.30 |
백준 1531 - 투명(Kotlin) (0) | 2023.01.29 |