MUKER_DEV with iOS

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์•ˆ์ „์ง€๋Œ€ ๋ณธ๋ฌธ

๐Ÿค– ์•Œ๊ณ ๋ฆฌ์ฆ˜/programmers

[swift] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - ์•ˆ์ „์ง€๋Œ€

MUKER 2022. 12. 30. 19:48
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr


๋ฌธ์ œํ’€์ด๋ฅผ ์ง๊ด€์ ์œผ๋กœ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์€ ํ’€์ด์™€
๊ณ ์ฐจํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•œ ํ’€์ด๋กœ ๋‚˜๋ˆ„์–ด ๊ณต๋ถ€ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

๋‚˜์˜ ํ’€์ด

import Foundation

func solution(_ board:[[Int]]) -> Int {
    var myboard = board
    for (iIndex, iValue) in myboard.enumerated() {
        for (jIndex, jValue) in iValue.enumerated() {
            guard myboard != [[1]] else { return 0}
            if jValue == 1 {
                if jIndex == 0 {
                    myboard[iIndex][jIndex+1] = 1
                    if iIndex != 0 {
                        myboard[iIndex-1][jIndex] = 1
                        myboard[iIndex-1][jIndex+1] = 1
                    }
                    if iIndex != myboard.endIndex-1 {
                        myboard[iIndex+1][jIndex] = 1
                        myboard[iIndex+1][jIndex+1] = 1
                    }
                    continue
                }
                if jIndex == myboard[1].endIndex-1 {
                    myboard[iIndex][jIndex-1] = 1
                    if iIndex != 0 {
                        myboard[iIndex-1][jIndex] = 1
                        myboard[iIndex-1][jIndex-1] = 1
                    }
                    if iIndex != myboard.endIndex-1 {
                        myboard[iIndex+1][jIndex] = 1
                        myboard[iIndex+1][jIndex-1] = 1
                    }
                    continue
                }
                    myboard[iIndex][jIndex+1] = 1
                    myboard[iIndex][jIndex-1] = 1
                    if iIndex != 0 {
                        myboard[iIndex-1][jIndex] = 1
                        myboard[iIndex-1][jIndex-1] = 1
                        myboard[iIndex-1][jIndex+1] = 1
                    }
                    if iIndex != myboard.endIndex-1 {
                        myboard[iIndex+1][jIndex] = 1
                        myboard[iIndex+1][jIndex-1] = 1
                        myboard[iIndex+1][jIndex+1] = 1
                    }
            }
        }
    }
    return myboard.flatMap { $0 }.filter { $0 == 0 }.count
}
  • ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹ใ…‹๋„ค ์ด๊ฒŒ ์ตœ์„ ์ด์˜€์–ด์š”...
  • ๋„์ €ํžˆ ์ƒ๊ฐํ•ด๋ด๋„ ์•„๋ฆ„๋‹ค์šด ์•Œ๊ณ ๋ฆฌ์ฆ˜์€ ์ƒ๊ฐ๋‚˜์ง€ ์•Š์•˜์Šด๋‹ˆ๋‹ค..
  • ์˜ค์ง 100์ ์„ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง„ ๋ฐ”๋ณด๊ฐ™์ง€๋งŒ ์ฐฉํ•œ ๋‚ด ์ฝ”๋“œ^^
  • ํ…Œ์ŠคํŠธ 9๋ฒˆ์ด n = 1์ด๋ผ์„œ [[1]]๊ฐ€ ๋“ค์–ด์˜ค๋Š”๋ฐ ์ฐฉํ•œ ๋‚ด์ฝ”๋“œ๋Š” ๊ทธ๋Ÿฐ๊ฑฐ ๋ชฐ๋ผ ๋ฌด์„œ์›Œ์„œ ์—๋Ÿฌ ๋ฑ‰์Œ..
  • ๊ทธ๋ž˜์„œ guard๋ฌธ์œผ๋กœ [[1]] ์ €๊ฒฉ๋ฒค ๋•Œ๋ ค์คฌ์Šต๋‹ˆ๋‹ค.

 

์ฐธ๊ณ ํ• ๋งŒํ•œ ํ’€์ด

import Foundation

func solution(_ board:[[Int]]) -> Int {

    var results: [[Int]] = Array(repeating: Array(repeating: 0, count: board.count), count: board.count)

    for (i,first) in board.enumerated() {
        for (j,second) in first.enumerated() {
            if board[i][j] == 1 {
                for x in i-1...i+1 {
                    for y in j-1...j+1{
                        if 0 <= x && 0 <= y && x < board.count && y < board.count { results[x][y] = 1 }
                    }
                }
            }
        }
    }

    return board.count * board.count - results.map{ $0.reduce(0,+) }.reduce(0, +)
}
import Foundation

func check_danger(_ b: inout [[Int]], _ N:Int, _ r:Int, _ c:Int) {
    let RR = [-1, -1, -1, 0, 1, 1, 1, 0]
    let CC = [-1, 0, 1, 1, 1, 0, -1, -1]

    for d in 0..<8 { 
        if 0..<N ~= (r + RR[d]), 0..<N ~= (c + CC[d]) {
            b[r + RR[d]][c + CC[d]] = 1 
        }
    }
}

func solution(_ board:[[Int]]) -> Int {
    var b = board
    let N = b.count

    for r in 0..<N {
        for c in 0..<N {
            if board[r][c] == 1 {
                check_danger(&b, N, r, c)
            }
        }
    }

    return b.flatMap({$0}).filter{$0 == 0}.count
  • ๋‹ค๋ฅธ์‚ฌ๋žŒ ํ’€์ด ์ค‘ ์ฐธ๊ณ ํ• ๋งŒํ•œ๊ฑฐ ๊ฐ€์ ธ์™”์Šต๋‹ˆ๋‹ค.