2022. 11. 1. 00:30ใAlgorithm
๋ฐฑ์ค - ๋นต์ง(Swift)
๋ฌธ์ ์ค๋ช
https://www.acmicpc.net/problem/3109
๋์ ํ์ด
์ฒซ๋ฒ์งธ๋ก ๊ฐ์ฅ ์ต๋๋ก ํ์ดํ๋ผ์ธ์ ๊น๋ ๊ฒ์ ๊ทธ๋ฆฌ๋ํ ์ ๊ทผ์ผ๋ก ๋งจ ์๋ถํฐ ์ฑ์ฐ๋ ๊ฒ์ด๋ค.
๋ง์ฝ ์ค๋ฅธ์ชฝ ์, ์ค๋ฅธ์ชฝ, ์ค๋ฅธ์ชฝ ์๋์ ๊ธธ์ด ์์๋ ์ค๋ฅธ์ชฝ ์๋๋ฅผ ์ ํํด์ ํ์ดํ๋ผ์ธ์ ํ์ฑํ๋ค๋ฉด ๊ทธ ์๋์ ๊ธธ๋ค์ ์์ชฝ์ด ๋งํ์ ์ค์นํ ๊ฒฝ์ฐ์ ์๊ฐ ์ค์ด๋ค๊ฒ ๋๋ค. ์ด ๋๋ฌธ์ ์ต๋ํ์ผ๋ก ๋ง๋ค๊ธฐ ์ํด์๋ ์ค๋ฅธ์ชฝ ์, ์ค๋ฅธ์ชฝ, ์ค๋ฅธ์ชฝ ์๋๋ก ์์๋๋ก ํ์ํด์ผ ํ๋ค.
์ด ๋ฌธ์ ๋ ํ๋ฒ ์ง๋๊ฐ ๊ธธ์ ๊ฐ ์ ์๋ค๋ ์ ์์ ์ผ๋ฐ์ ์ธ ๋ฐฑํธ๋ํน์ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋์ ์์์ผํ๋ค.
๋ฐฑํธ๋ํน์ ์ ์๋ ํน์ ํ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ๊ฒฝ์ฐ๋ง ๊ณ์ํด์ ํ์ํ๋ ๊ฒ์ด๋ค. ์ฆ ๊ฐ์ง์น๊ธฐ๋ฅผ ํ๋ ๊ฒ์ธ๋ฐ ์๋ ์ฝ๋์์๋ ํน์ ์กฐ๊ฑด๊น์ง ๋๋ฌํ๊ณ , ํน์ ์กฐ๊ฑด์ ๋๋ฌํ์ง์์ผ๋ฉด ๋ค๋ฅธ ๊ฒฝ๋ก๋ก ๊ฐ๋(์ค๋ฅธ์ชฝ ์๊ฐ ๋งํ์๋ค๋ฉด ์ค๋ฅธ์ชฝ์ผ๋ก) ๊ฒ์ ์ผ๋ฐ์ ์ธ ๋ฐฑํธ๋ํน๊ณผ ๊ฐ๋ค.
ํ์ง๋ง ์ต์ข ์ผ๋ก ์ํ๋ ํน์ ์กฐ๊ฑด์ ๋๋ฌํ์๋(๋งจ ๋์ ๋์ฐฉ) ์ด์ ๊ฒ์ผ๋ก ๋์๊ฐ์ ๋ค์ ์ด์ด์ ๊ฒฝ๋ก๋ฅผ ์ฐพ๋ ๊ฒ์ด ์๋๋ค.
์ด ๋ฌธ์ ๋ ์ง๋์จ ๊ธธ์์๋ ๊ด์ฌ์ด ์๋ค. ๋ฐ๋์ ์ฒ์๊ฐ๋ ๊ฒฝ๋ก์ฌ์ผ ํ๊ธฐ ๋๋ฌธ์ ์ต์ข ์กฐ๊ฑด์ ๋๋ฌํ ์๊ฐ ๋ฐฑํธ๋ํน์ ํ์ง์๊ณ ๋ฐ๋ก ๋๋ผ ์ ์์ด์ผํ๋ค. ๊ทธ๋์ dfsํจ์์ ์ฒซ๋ฒ์งธ ์กฐ๊ฑด์ ๋์ ๋๋ฌํ๋ค๋ฉด true๋ฅผ ๋ฆฌํดํ๊ฒ ํจ์ผ๋ก์จ ๋ชจ๋ ํจ์์ ์คํ์ ์ข ๋ฃ์ํฌ ์ ์๊ฒ๋๋ค.
๊ทธ๋ฆฌ๊ณ if dfs(r, c)์ผ๋ true๋ฅผ ์ค์ผ๋ก์จ ๊ทธ ์ดํ์ ๋๋ฌํ์ง ๋ชปํ์๋๋ ๊ทธ ๋จ๊ณ์์ ๋ค์ ์ค๋ฅธ์ชฝ์ด๋ ์ค๋ฅธ์ชฝ ์๋๋ก ๊ฐ ์ ์๊ฒ๋ ์ค๊ณ๋ฅผ ํ๋ค.
import Foundation
let input = readLine()!.components(separatedBy:" ").map{Int($0)!}
var map = [[Bool]]()
for _ in 0..<input[0] {
map.append(readLine()!.map{$0 == "."})
}
func inRange(_ r: Int, _ c: Int) -> Bool {
return r>=0 && c>=0 && r<input[0] && c<input[1]
}
let dr = [-1, 0, 1]
var result = 0
func dfs(_ r: Int, _ c: Int) -> Bool {
if c == input[1]-1 {
return true
}
for i in 0..<3 {
let row = r+dr[i]
let col = c+1
if inRange(row, col), map[row][col] {
map[row][col] = false
// ๋ง์ฝ ๋ค์ ์ฌ๊ท๋ก ๋ค์ด๊ฐ ๊ฒ๋ค์ด ๋งํ ๊ณณ์ด๋ ๋ฐฉ๋ฌธํ ๊ณณ์ด ์๋๋ผ๋ฉด true๋ก
if dfs(row, col) {
return true
}
}
}
return false
}
for i in 0..<input[0] {
if dfs(i, 0) {
result += 1
}
}
print(result)
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค - ๊ณตํญ(Swift) (0) | 2022.11.03 |
---|---|
๋ฐฑ์ค - ํฌ๊ฒ ๋ง๋ค๊ธฐ(Swift) (0) | 2022.11.03 |
๊ฒ์์ ๋ง๋ ๋์ค์ด (0) | 2022.10.31 |
๋ฐฑ์ค - ๋ณ๋ ๋์ดํธ(Swift) (0) | 2022.10.31 |
๋ฐฑ์ค - ๋ฉํฐํญ ์ค์ผ์ค๋ง(Swift) (0) | 2022.10.31 |