Notice
Recent Posts
Recent Comments
Link
ยซ   2024/05   ยป
์ผ ์›” ํ™” ์ˆ˜ ๋ชฉ ๊ธˆ ํ† 
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
๊ด€๋ฆฌ ๋ฉ”๋‰ด

lgvv98

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ์ฟผ๋“œ ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ

[Swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ์ฟผ๋“œ ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

๐Ÿฅ• ์บ๋Ÿฟ๋งจ 2022. 4. 13. 15:58

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค LV2. ์ฟผ๋“œ ์••์ถ• ํ›„ ๊ฐœ์ˆ˜ ์„ธ๊ธฐ

 

โœ… ๋ฌธ์ œ๋ฅผ ๋ณด์ž๋งˆ์ž ์žฌ๊ท€๋กœ ํ•ด์•ผํ•œ๋‹ค๊ณ  ์ƒ๊ฐ์ด ๋“ค์—ˆ์Œ.

์˜ˆ์ „์— ํ•™๊ต ์ˆ˜์—…์—์„œ ์ž๋ฃŒ๊ตฌ์กฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜ ์‹œ๊ฐ„์— divide and conquer๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋Š”๋ฐ, ๊ทธ๋ž˜์„œ ์ด๋ฅผ ํ™œ์šฉํ•จ.

๊ทผ๋ฐ ๊ทธ๋•Œ๋Š” ์ž‘์€ ๋ฌธ์ œ์—์„œ ํฐ ๋ฌธ์ œ๋กœ ๊ฐ”์—ˆ๊ณ , ์ด๋ฒˆ์—๋Š” ํฐ ๋ฌธ์ œ์—์„œ ์ž‘์€ ๋ฌธ์ œ๋กœ ๋‚ด๋ ค๊ฐ€์•ผ ํ–ˆ์Œ.

 

 

โœ… ์ฝ”๋“œ

// https://programmers.co.kr/learn/courses/30/lessons/68936
import Foundation

struct p68936 {
    static func run() {
        print(p68936.solution([[1,1,0,0],[1,0,0,0],[1,0,0,1],[1,1,1,1]])) // [4,9]
    }
    
    static var zeroCount = 0
    static var oneCount = 0
    
    static func solution(_ arr:[[Int]]) -> [Int] {
        // ์žฌ๊ท€ ์“ฐ๋ฉด ๊ธˆ๋ฐฉ ํ’€๊ฒ ๋‹ค! -> divide and conquer ํ•ด์•ผํ•œ๋‹ค.
        
        reculsive(arr: arr, row: 0, col: 0, n: arr.count)
        return [zeroCount, oneCount]
    }
    
    static func reculsive(arr: [[Int]], row: Int, col: Int, n: Int) {
        let point = arr[row][col] // ์‹œ์ž‘ํ•˜๋Š” ์ง€์ 
        
        for i in row..<row + n {
            for j in col..<col + n {
                if point != arr[i][j] {
                    reculsive(arr: arr, row: row, col: col, n: n/2)
                    reculsive(arr: arr, row: row, col: col + n/2, n: n/2)
                    reculsive(arr: arr, row: row + n/2, col: col, n: n/2)
                    reculsive(arr: arr, row: row + n/2, col: col + n/2, n: n/2)
                    
                    return
                }
            }
        }
        
        // ํ•˜๋‚˜์˜ ์˜์—ญ์œผ๋กœ ๋ฌถ์˜€์„ ๊ฒฝ์šฐ or ๋๊นŒ์ง€ ๋ฌถ์ด์ง€ ์•Š์•„ n์ด 1์ธ ๊ฒฝ์šฐ
        if point == 1 { oneCount += 1 }
        else { zeroCount += 1}
    }
}

 

Comments