문제 링크
문제 해설
2차원 배열을 이용하면 쉽게 풀 수 있는 문제다. 2차원 배열에서 한 칸의 넓이를 1이라고 생각하고 문제를 풀어나간다.
문제에 흰색 도화지의 가로, 세로 길이가 각각 100이라고 명시되어 있으므로 100\(\times\)100 크기의 Boolean 배열을 선언한다. 그 후 색종이의 개수만큼 입력받은 색종이의 위치부터 + 10까지의 값을 true로 변환하는 과정을 반복한다. 최종적으로 배열 내의 true의 개수가 색종이가 붙은 영역의 넓이가 된다.
Code
fun main() = with(System.`in`.bufferedReader()) {
val field = Array(100) { BooleanArray(100) }
repeat(readLine().toInt()) {
readLine().split(' ').map { it.toInt() }.let { p ->
for (x in p[0] until p[0] + 10)
for (y in p[1] until p[1] + 10)
field[x][y] = true
}
}
println(field.sumOf { it.count { p -> p } })
}
'Algorithm > BOJ' 카테고리의 다른 글
[Kotlin] 백준 2630 : 색종이 만들기 (0) | 2022.12.08 |
---|---|
[Kotlin] 백준 11866 : 요세푸스 문제 0 (1) | 2022.12.08 |
[Kotlin] 백준 11286 : 절댓값 힙 (0) | 2022.12.06 |
[Kotlin] 백준 11723 : 집합 (0) | 2022.12.05 |
[Kotlin] 백준 5430 : AC (1) | 2022.12.04 |
댓글