본문 바로가기

알고리즘/백준 문제풀이

백준 2576 색종이-2(Kotlin)

728x90

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

 

2567번: 색종이 - 2

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

www.acmicpc.net

문제 접근

  • 검은색 영역의 둘레를 구하는 문제
  • 하얀 영역은 0 검은 영역은 1로 처리
  • 1에 인접한 0의 개수를 구하는 문제

정답 코드

import java.util.*
fun main(args: Array<String>): Unit = with(Scanner(System.`in`)) {
//이차원 배열 위에 0과 1로 표시
     val arr = Array(101){IntArray(101)}

     var n = nextInt()
     while(n-- > 0){
          val x = nextInt()
          val y = nextInt()
          for (i in x until x+10){
               for (j in y until y+10){
                    arr[i][j] = 1
               }
          }
     }

     //1이 접하고있는 0의 개수
     //가로 세로 구분해서 탐색
     var ans = 0
     for (i in 0 until arr.size){
          for (j in 0 until arr.size){

               if (arr[i][j] == 0){
                    //가로 길이
                    if (i+1 < arr.size && arr[i+1][j] != 0  ){
                         ans++
                    }
                    if (i!=0 &&arr[i-1][j] !=0){
                         ans++
                    }
                    //세로 길이
                    if (j+1< arr.size && arr[i][j+1] != 0 ){
                         ans++
                    }
                    if(j!=0 &&arr[i][j-1] !=0){
                         ans++
                    }
               }
          }
     }
     print(ans)
}