[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ง๋
๋ค๋ฅธ ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ๊ฐ๋จํ๊ฒ ํ๋ฃจ์ ํ ๋ฌธ์ ์ฉ ํ๋ ค๊ณ ํ์ต๋๋ค. ๊ทธ๋ฌ๋ค๊ฐ ์์ ์ง๋ ๋ฌธ์ ๋ฅผ ํ๊ฒ ๋์๊ณ ๋ฌธ์ ๋ฅผ ์ฝ์ด๋ณด๋, 2์ฐจ์ ๋ฐฐ์ด์์ ํญํ์ด ์ค์น๋ ์์น ์ฃผ๋ณ์ ํญํ์ ์ค์นํ๊ณ , ํญํ์ด ์ค์น๋์ง ์์ ์ง์ญ์ ๊ฐ์๋ฅผ ๋ฐํํ๋ ๋ฌธ์ ์์ต๋๋ค. ์ด๋ฐ ์ ํ์ ๋ฌธ์ ๋ฅผ ์ฌ๋ฌ ๋ฒ ํ์ด๋ด์ ์ต์ํด์ ธ ์์ด์ ๋์ ํ๊ฒ ๋์์ต๋๋ค.์ฒ์์ ์์ฑํ ์ฝ๋๋ก๋ ์ฃผ์ด์ง ๊ธฐ๋ณธ ํ ์คํธ ์ผ์ด์ค๋ ํต๊ณผํ์ง๋ง, ์ ์ถํ ๋๋ ์ ๋ฐ ์ด์์ ํ ์คํธ ์ผ์ด์ค๊ฐ ์คํจํ์ฌ ์ด๋ฆฌ๋ฅ์ ํ์ต๋๋ค...??? ๐ฎ
1. ๋ฌธ์ ๋งํฌ
https://school.programmers.co.kr/learn/courses/30/lessons/120866
2. ์ฝ๋
func solution(_ board:[[Int]]) -> Int {
let row = [-1,-1,-1,0,0,1,1,1]
let col = [-1,0,1,-1,1,-1,0,1]
let size = board.count
var tempArr = board
func setBombArea(i:Int, j:Int){
for k in 0..<8{
if (i + row[k] >= 0 && i + row[k] < size) && (j + col[k] >= 0 && j + col[k] < size){
tempArr[i+row[k]][j+col[k]] = 1
}
}
}
// ํญํ ์ฐพ๊ณ ์ค์นํ๊ธฐ ๋ถ๋ถ
for i in 0..<size{
for j in 0..<size{
if board[i][j] != 1{
continue
}
setBombArea(i: i, j: j)
}
}
let safeArea = tempArr.map({ $0.filter({ $0 == 0 }).count }).reduce(0,+)
return safeArea
}
3. ์ฝ๋ ์ค๋ช
๋จผ์ row, col ๋ณ์๋ ์, ์๋, ์ ์, ๋๊ฐ์ ๋ฐฉํฅ์ ํ์ํ๊ธฐ ์ํด ์ ์ธ๋์์ต๋๋ค. ๋ฐ๋ณต๋ฌธ์์ ์ธ๋ฑ์ค ๊ฐ์ ๋ํด ํด๋น ๋ฐฉํฅ์ ์์น๋ฅผ ๊ตฌํ ์ ์์ต๋๋ค.
size ๋ณ์๋ ์ฃผ์ด์ง ๋ฐฐ์ด board์ ํฌ๊ธฐ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ผ๋ก "board๋ n * n ํฌ๊ธฐ์ ๋ฐฐ์ด"์ด๋ผ๊ณ ๋ฌธ์ ์ ๋ช
์๋์ด ์์ด ๊ณ ์ ๊ฐ์ผ๋ก ์ค์ ํ์์ต๋๋ค.
์ด์ค for-in๋ฌธ์ ์ฌ์ฉํ์ฌ ๊ฐ๊ฐ์ ์ธ๋ฑ์ค์ ์ ๊ทผํ์์ต๋๋ค. ๋ง์ฝ ํด๋น ์ธ๋ฑ์ค์ ๊ฐ์ด 1์ด ์๋๋ผ๋ฉด continue๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ ์์๋ก ๋์ด๊ฐ๋๋ค. ๊ทธ๋ ์ง ์๊ณ ๊ฐ์ด 1์ด๋ผ๋ฉด setBombArea ๋ฉ์๋์ ํ์ฌ ์ธ๋ฑ์ค ์์น i, j๋ฅผ ์ ๋ฌํ์ฌ ์, ์๋, ์ ์, ๋๊ฐ์ ๋ฐฉํฅ์ ํ์ํ๋๋ก ๋ง๋ค์์ต๋๋ค. ํ์ํ ๋๋ ๊ฐ ๋ฐฉํฅ์ผ๋ก ๋ํด์ง ๊ฐ๋ค์ด board์ ๋ฐฐ์ด ๋ฒ์ ๋ด์ ์ํ๋์ง ํ์ธํฉ๋๋ค.
๋ง์ฝ ํด๋น ์์น๊ฐ ๋ฐฐ์ด ๋ฒ์ ๋ด์ ์ํ๋ค๋ฉด tempArr์ 1์ ์ค์ ํ์ฌ ํญํ์ ์ค์นํฉ๋๋ค. ์ดํ tempArr์์ ๊ฐ์ด 0์ธ ์์๋ค์ ๊ฐ์๋ฅผ ์ธ์ด safeArea์ ์ ์ฅํฉ๋๋ค.
๋ฌธ์ ๋ฅผ ๋งํ๊ธฐ ์ํด ์ฝ๋๋ฅผ ์์ ํ ๊ณผ์ ์์ ๋ ๊ฐ์ง ์ค๋ฅ๋ฅผ ๋ฐ๊ฒฌํ์ต๋๋ค. ์ฒซ์งธ๋ก ๋ฐฐ์ด ๋ฒ์๋ฅผ ์๋ชป ๊ณ ๋ คํ์ฌ 0์ ํฌํจ์ํค์ง ์์๋ ๊ฒ์ ๋๋ค. ๋์งธ๋ก ๋ฉ์๋์ ์ ๋ฌ๋๋ ๋งค๊ฐ๋ณ์์ ๋ณ์๋ช ์ด ์ค๋ณต๋๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ํ๋ ธ์ ๋ ๋น์์ ์ค๋ง ๋ด๊ฐ ๋ฌธ์ ๋ฅผ ์๋ชป ์ดํดํ์๊น?? ๋ค์ ์ฝ์ด๋ณด๊ณ ๋ด๊ฐ ๋ฐ๊ฒฌํ์ง ๋ชปํ๋ ๋ค๋ฅธ ์์ธ ์ฒ๋ฆฌ๊ฐ ์์๊น ์๊ฐํ์์ต๋๋ค ใ ใ ;;๐