본문 바로가기
  • 개발하는 곰돌이
Algorithm/BOJ

[Kotlin] 백준 2563 : 색종이

by 개발하는 곰돌이 2022. 12. 7.

문제 링크

 

2563번: 색종이

가로, 세로의 크기가 각각 100인 정사각형 모양의 흰색 도화지가 있다. 이 도화지 위에 가로, 세로의 크기가 각각 10인 정사각형 모양의 검은색 색종이를 색종이의 변과 도화지의 변이 평행하도록

www.acmicpc.net



문제 해설

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

댓글