상세 컨텐츠

본문 제목

색종이 만들기(백준)

코딩테스트

by dofury 2023. 8. 2. 11:10

본문

728x90

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분할로 나눠서 다시 재귀함수를 실행하였고 아닐경우는 처음요소 값을 리턴하는 방식이다.

728x90

'코딩테스트' 카테고리의 다른 글

요시푸스 문제 0  (0) 2023.08.17
카드2(백준)  (0) 2023.08.14
바이러스(백준)  (0) 2023.07.28
계단 오르기(백준)  (0) 2023.07.27
유기농 배추(백준)  (0) 2023.07.26

관련글 더보기

댓글 영역