package com.dofury.kotlin
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main() {
val br = BufferedReader(InputStreamReader(System.`in`))
val bw = BufferedWriter(OutputStreamWriter(System.`out`))
val n = br.readLine().toInt()
val arr = Array(n) { IntArray(n) }
repeat(n){
val paper = br.readLine().split(' ').map { it.toInt() }
arr[it] = paper.toIntArray()
}
val results = create(0,0,n,arr)
var blue = 0
var white = 0
for(i in results){
if(i=='1')
blue++
else if(i=='0')
white++
}
bw.write("$white")
bw.newLine()
bw.write("$blue")
bw.flush()
bw.close()
br.close()
}
fun create(x:Int, y:Int, n:Int, arr:Array<IntArray>): String{
if(n==1){
return arr[x][y].toString()
}
val firstValue = arr[x][y].toString()
for(i in x until x+n){
for(j in y until y+n){
if(arr[i][j].toString() != firstValue){
val half = n / 2
return "(" + create(x,y,half,arr) +
create(x,y+half,half,arr) +
create(x+ half, y, half, arr) +
create(x+ half,y +half, half, arr) + ")"
}
}
}
return firstValue
}
재귀 함수를 구현해서 문제를 풀었다.
정사각형의 요소가 처음것과 다른게 존재할경우
4분할로 나눠서 다시 재귀함수를 실행하였고 아닐경우는 처음요소 값을 리턴하는 방식이다.
요시푸스 문제 0 (0) | 2023.08.17 |
---|---|
카드2(백준) (0) | 2023.08.14 |
바이러스(백준) (0) | 2023.07.28 |
계단 오르기(백준) (0) | 2023.07.27 |
유기농 배추(백준) (0) | 2023.07.26 |
댓글 영역