๋ฐ์ํ
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)
๋ฐ์ํ
'๐ ์ฝํ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Swift] ๋ฐฑ์ค2630 ์์ข ์ด ๋ง๋ค๊ธฐ (0) | 2023.04.04 |
---|---|
[Swift] ๋ฐฑ์ค 1541 ์์ด๋ฒ๋ฆฐ ๊ดํธ (0) | 2023.04.04 |
[Swift] ๋ฐฑ์ค 1780 ์ข ์ด์ ๊ฐ์ (0) | 2023.04.04 |
[Swift] ๋ฐฑ์ค 1676 ํฉํ ๋ฆฌ์ผ 0์ ๊ฐ์ (0) | 2023.03.30 |
[Swift] ๋ฐฑ์ค1012 ์ ๊ธฐ๋๋ฐฐ์ถ (0) | 2023.03.30 |