Jakorithm
article thumbnail
728x90

문제

https://www.acmicpc.net/problem/2563

 

2563번: 색종이

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

www.acmicpc.net

 

 

가로, 세로의 길이가 각각 100인 흰색 도화지 안에 가로, 세로의 길이가 각각 10인 정사각형 색종이를 가로 세로가 서로 평행하도록 여러 장 붙였을 때, 색종이의 검은색 영역의 넓이를 구하는 문제다.

 

 

코드

첫 번째 줄에 색종이의 개수 n이 주어지고, 이후 줄부터 각 색종이의 왼쪽 아래 모서리의 위치가 주어진다.

fun main() {
    val arr = Array(100) {
        BooleanArray(100) {
            false
        }
    }
    var result = 0
    val n = readln().toInt()
    
    repeat(n) {
        val input = readln().split(" ").map { it.toInt() }
        val x = input[0]
        val y = input[1]

        for (i in x until x + 10) {
            for (j in y until y + 10) {
                if (!arr[i][j]) {
                    arr[i][j] = true
                    result++
                }
            }
        }
    }

    println(result)
}
  • 행, 열의 크기가 각각 100인 Boolean 타입의 2차원 배열을 초기값 false로 선언한다.
  • 결과를 담을 result와 색종이의 개수 n을 입력받는다.
  • 이후 색종이 개수만큼 반복하여 왼쪽 하단 모서리의 위치인 x와 y를 입력받는다.
  • 색종이의 가로, 세로 길이는 10이므로 x부터 10만큼, y부터 10만큼 중첩 반복한다.
  • 처음에 선언한 배열의 위치가 false이면 true로 바꾼 뒤 result를 1 증가시킨다.
728x90