문제
14719번: 빗물
첫 번째 줄에는 2차원 세계의 세로 길이 H과 2차원 세계의 가로 길이 W가 주어진다. (1 ≤ H, W ≤ 500) 두 번째 줄에는 블록이 쌓인 높이를 의미하는 0이상 H이하의 정수가 2차원 세계의 맨 왼쪽 위치
www.acmicpc.net
풀이
입력받은 블록 나타내는 2차원 배열을 생성하여 해결하였다. 배열에서 1은 블록을 나타내고 0은 빈 공간을 나타내도록 구성했다.
2중 for문을 사용하여 1층부터 확인한다. 처음 블록을 만나면 해당 블록 다음부터 빈 공간의 개수를 세고, 다시 블록을 만나면 빈 공간에 빗물이 고일수 있는 것으로 처리하여 전체 결과값에 더해준다. 모든 층을 확인하고 결과값을 출력해주면 된다.
코드
fun main() {
val br = System.`in`.bufferedReader()
val bw = System.out.bufferedWriter()
val (height, width) = br.readLine().split(' ').map { it.toInt() }
val block = br.readLine().split(' ').map { it.toInt() }
val map = Array(height){ IntArray(width) }
for(i in 0 until width) {
for(j in 0 until block[i]) {
map[j][i] = 1
}
}
var sum = 0
for(i in 0 until height) {
var check = false
var cnt = 0
for(j in 0 until width) {
if(check) {
if(map[i][j] == 0) cnt++
else {
sum += cnt
cnt = 0
}
} else {
if(map[i][j] == 1) check = true
}
}
}
bw.write("$sum")
bw.flush()
bw.close()
br.close()
}
'알고리즘 > Baekjoon' 카테고리의 다른 글
[백준] 13301번: 타일 장식물 - Kotlin[코틀린] (0) | 2024.03.17 |
---|---|
[백준] 1647번: 도시 분할 계획 - Kotlin[코틀린] (0) | 2024.03.13 |
[백준] 11444번: 피보나치 수 6 - Kotlin[코틀린] (0) | 2024.03.10 |
[백준] 2961번: 도영이가 만든 맛있는 음식 - Kotlin[코틀린] (1) | 2024.03.07 |
[백준] 10830번: 행렬 제곱 - Kotlin[코틀린] (0) | 2024.03.06 |