๐Ÿ“ ์ฝ”ํ…Œ/BOJ

[Swift] ๋ฐฑ์ค€ 1922 ์ฟผ๋“œํŠธ๋ฆฌ

JerryiOS 2023. 4. 4. 20:12

import Foundation

/// ์ฃผ์–ด์ง„ ์˜์ƒ์ด ๋ชจ๋‘ 0์œผ๋กœ๋งŒ ๋˜์–ด์žˆ์œผ๋ฉด ์••์ถ• ๊ฒฐ๊ณผ๋Š” "0"
/// ๋ชจ๋‘ 1๋กœ๋งŒ ๋˜์–ด์žˆ์œผ๋ฉด ์••์ถ•๊ฒฐ๊ณผ๋Š” "1"
/// ๋งŒ์•ฝ 0๊ณผ 1์ด ์„ž์—ฌ์žˆ์œผ๋ฉด ์ „์ฒด๋ฅผ ํ•œ๋ฒˆ์— ๋‚˜ํƒ€๋‚ด์ง€ ๋ชปํ•˜๊ณ 
/// ์™ผ์ชฝ ์œ„, ์˜ค๋ฅธ์ชฝ ์œ„, ์™ผ์ชฝ ์•„๋ž˜, ์˜ค๋ฅธ์ชฝ ์•„๋ž˜ ์ด๋ ‡๊ฒŒ 4๊ฐœ์˜ ์˜์ƒ์œผ๋กœ ๋‚˜๋ˆ„์–ด ์••์ถ•ํ•˜๊ฒŒ๋œ๋‹ค.
/// ์ด 4๊ฐœ์˜ ์˜์—ญ์„ ์••์ถ•ํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ฐจ๋ก€๋Œ€๋กœ ๊ด„ํ˜ธ ์•ˆ์— ๋ฌถ์–ด์„œ ํ‘œํ˜„ํ•œ๋‹ค.

/// ๋ถ„ํ• ์ •๋ณต์ด๋ž€? ๋ฌธ์ œ๋ฅผ ๋‚˜๋ˆŒ ์ˆ˜ ์—†์„ ๋•Œ๊นŒ์ง€ ๋‚˜๋ˆ„์–ด์„œ ๋‹ค์‹œ ํ•ฉ๋ณ‘ํ•˜์—ฌ ๋ฌธ์ œ์˜ ๋‹ต์„ ์–ป๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜
/// ์ƒ์œ„์˜ ํ•ด๋‹ต์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด ์•„๋ž˜๋กœ ๋‚ด๋ ค๊ฐ€๋ฉด์„œ ํ•˜์œ„์˜ ํ•ด๋‹ต์„ ๊ตฌํ•จ

let N = Int(readLine()!)!

var board = [[Int]]()

for _ in 0..<N {
    let numArr = readLine()!.map { Int(String($0))! }
    board.append(numArr)
}

var result = ""

func check(_ x: Int, _ y: Int, _ n: Int) -> Bool {
    for i in x..<x+n {
        for j in y..<y+n {
            if board[x][y] != board[i][j] {
                return false
            }
        }
    }
    return true
}

func quadTree(_ x: Int, _ y: Int, _ n: Int) {
    if check(x, y, n) {
        result += "\(board[x][y])"
        return
    }
    let w = n / 2
    result += "("
    for i in 0..<2 {
        for j in 0..<2 {
            quadTree(x + i * w, y + j * w, w)
        }
    }
    result += ")"
}

quadTree(0, 0, N)
print(result)
๋ฐ˜์‘ํ˜•