์˜ค๋Š˜ ํ•˜๋ฃจ์ข…์ผ ํ’€๋ ค๊ณ  ๋„์ „ํ–ˆ๋Š”๋ฐ ์‹คํŒจํ•ด์„œ ๊ฒฐ๊ตญ ๊ตฌ๊ธ€๋ง์„ ํ–ˆ๋‹ค..

์ด ๋ฌธ์ œ์—์„œ ์ฃผ์–ด์ง„ N์˜ ์ตœ๋Œ€๊ฐ’์€ 3^7 = 2187์ด๋‹ค.

์ฆ‰ N^2 = 4782969

1์ดˆ์— 2000๋งŒํšŒ ์—ฐ์‚ฐ๋œ๋‹ค๊ณ  ํ•ด์„œ 

2์ดˆ = 4์ฒœ๋งŒํšŒ์•ˆ์— ํ’€๋ฉด๋˜๋‹ˆ๊นŒ O(N^2)๋กœ ํ’€๋ฉด ๋  ์ค„ ์•Œ์•˜๋Š”๋ฐ .. ๊ณ„์† ์‹œ๊ฐ„์ดˆ๊ณผ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ–ˆ๋‹ค.

 

๊ตฌ๊ธ€๋ง ์ค‘ ํŒŒ์ด์ฌ์œผ๋กœ ํ‘ผ ์ฝ”๋“œ๋“ค์„ Swift์–ธ์–ด๋กœ ๋ฐ”๊ฟ” ํ’€์–ด๋ด๋„.. ํŒŒ์ด์ฌ์—์„œ๋Š” ํ’€๋ฆฌ์ง€๋งŒ Swift์—์„œ๋Š” ํ’€๋ฆฌ์ง€ ์•Š์•˜๋‹คใ… ใ… 

 

 O(N^2logN), O(NlogN) ๋“ฑ๋“ฑ ๋‹ค์–‘ํ•œ ์‹œ๊ฐ„๋ณต์žก๋„๋กœ ๊ตฌํ˜„ํ•ด๋ดค๋Š”๋ฐ ๋ชจ๋‘ ์‹คํŒจํ–ˆ์—ˆ๋‹ค.

import Foundation

let N = Int(readLine()!)!

var matrix = [[Int]]()

for _ in 0..<N {
    let line = readLine()!.split(separator: " ").map { Int($0)! }
    matrix.append(line)
}

var counts = [0, 0, 0]

func countPaper(_ paper: [[Int]], _ x: Int, _ y: Int, _ size: Int) {
    
    // ํ•ด๋‹น ๋ถ€๋ถ„์ด ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์ธ์ง€ ํ™•์ธ
    var allSame = true
    let first = paper[x][y]
    for i in x..<x+size {
        for j in y..<y+size {
            // ๋‹ค๋ฅธ ์ˆ˜๊ฐ€ ์žˆ์„ ๊ฒฝ์šฐ ๋ฐ˜๋ณต๋ฌธ ํƒˆ์ถœ
            if paper[i][j] != first {
                allSame = false
                break
            }
        }
    }

    if allSame {
        // ํ•ด๋‹น ๋ถ€๋ถ„์ด ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜์ผ ๊ฒฝ์šฐ, ํ•ด๋‹น ์ˆ˜์— ํ•ด๋‹นํ•˜๋Š” counts๋ฅผ ์ฆ๊ฐ€
        counts[first + 1] += 1
    } else {
        // ํ•ด๋‹น ๋ถ€๋ถ„์ด ๋ชจ๋‘ ๊ฐ™์€ ์ˆ˜๊ฐ€ ์•„๋‹ ๊ฒฝ์šฐ, 9๊ฐœ์˜ ์ž‘์€ ์ข…์ด๋กœ ๋ถ„ํ• ํ•˜์—ฌ ์žฌ๊ท€ํ˜ธ์ถœ
        let newSize = size / 3
        for i in 0..<3 {
            for j in 0..<3 {
                countPaper(paper, x + i * newSize, y + j * newSize, newSize)
            }
        }
    }
}

countPaper(matrix, 0, 0, N)

print(counts[0])
print(counts[1])
print(counts[2])

๊ฒฐ๊ตญ ์™„๋ฒฝํ•œ ๋ฐฉ๋ฒ•์€ ์•„๋‹ˆ์ง€๋งŒ ๋ฐ˜๋ณต๋ฌธ์„ ๋„๋Š” ๋„์ค‘ ํƒˆ์ถœํ•˜๊ฒŒํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ๋ฉดํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.

์•„๋ฌด๋ž˜๋„ N^2์—์„œ ๋ฐ˜๋ณต์ด ๊ฐ€์žฅ ๋งŽ์ด ๋  ๊ฒƒ ๊ฐ™์•„์„œ ํ•„์š”์—†๋Š” ๋ฐ˜๋ณต์„ ํ•˜์ง€ ์•Š๋„๋ก break๋ฅผ ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

๋ฐ˜์‘ํ˜•
JerryiOS