์น๊ตฌ์ DFS / BFS์ ๋ํ ๊ณ ์ฐฐ์ ํ ํจ๊ณผ๋ฅผ ํกํกํ ๋ณด๋๊ฑธ๊น? ์ด์ DFS์ BFS๋ฅผ ๋ช ํํ๊ฒ ๊ตฌ๋ณํ ์ค ์๊ณ ๋ฌธ์ ๊ฐ ์ฝ๊ณ ๋น ๋ฅด๊ฒ ํ๋ฆฐ๋ค..!
โซ๏ธ ๋ฌธ์
https://www.acmicpc.net/problem/3184
โซ๏ธ ๋์ ํ์ด
์์ ํ์๋ DFS ๋ฌธ์ ์ ํ๊ณผ ๊ณ์ ๋น์ทํ๊ธฐ ๋๋ฌธ์ ์์ํ๊ฒ ํ์ด๋ฅผ ์๊ฐํด๋๋ค. ๊ทธ๋ฆฌ๊ณ ์น๊ตฌ์ ์ด์ผ๊ธฐ ๋๋ด๋ ๋ถ๋ถ์ ์ ์๊ฐํ๋ฉด์ ํธ๋๊น ๊ธ๋ฐฉ ํ๋ฆฐ๋ค.. ์ฌ๋ ์ฌ๋
์์ญ๋ง๋ค ์๊ณผ ๋๋์ ์๋ฅผ ๋ฐ๋ก ์ธ์ด์ค์ผํ๊ธฐ ๋๋ฌธ์, for ๋ฌธ์ ๋๋ ค์ ์์ญ๋ณ๋ก ํ์ํด์ฃผ์ด์ผํ๋ค๊ณ ์๊ฐํ๋ค. ์์ญ๋ง๋ค ํ์์ ๋ง์น๋ฉด ์ ๋ถ # (์ธํ๋ฆฌ)๋ก ๊ฐ์ ๋ฐ๊ฟ์ฃผ๋ฉด์ ๋ฐฉ๋ฌธ์ฒ๋ฆฌ๋ฅผ ํด์ฃผ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ ์์ญ๋ง๋ค ์๊ณผ ๋๋์ ์๋ฅผ ๋น๊ตํด์ ์ด answer์ ๊ตฌํด์ฃผ์๋ค.!
๋ฌธ์ ๋ฅผ ํ๊ธฐ ์ ์๋์ฒ๋ผ ๊ทธ๋ฆผ์ ๊ทธ๋ ธ๋ค.
์ด๊ฒ์ ๊ทธ๋๋ก ์ฝ๋๋ก ์ฎ๊ธฐ๋ฉด ์๋์ ๊ฐ์ด ์ ๋ต์ฝ๋๋ฅผ ์์ฑํ ์ ์๋ค!
โซ๏ธ ์ ๋ต์ฝ๋
import Foundation
let rc = readLine()!.split(separator: " ").map{ Int($0)! }
var field = [[String]]()
for _ in 0..<rc[0] {
field.append(readLine()!.map{ String($0) })
}
let dx = [-1, 1, 0, 0]
let dy = [0, 0, -1, 1]
var oCnt = 0
var vCnt = 0
var answer = [0, 0]
private func dfs(x: Int, y: Int) {
switch field[x][y] {
case "o":
oCnt += 1
case "v":
vCnt += 1
default:
break
}
field[x][y] = "#"
for i in 0..<4 {
let nx = x + dx[i]
let ny = y + dy[i]
if nx < 0 || ny < 0 || nx >= rc[0] || ny >= rc[1] {
continue
}
if field[nx][ny] != "#" {
dfs(x: nx, y: ny)
}
}
}
for i in 0..<rc[0] {
for j in 0..<rc[1] {
if field[i][j] != "#" {
oCnt = 0
vCnt = 0
dfs(x: i, y: j)
if vCnt >= oCnt {
answer[1] += vCnt
} else {
answer[0] += oCnt
}
}
}
}
print("\(answer[0]) \(answer[1])")
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] (Swift) 10026๋ฒ - ์ ๋ก์์ฝ (๊ณจ๋5) (DFS) (0) | 2023.03.03 |
---|---|
[๋ฐฑ์ค] (Swift) 14716๋ฒ - ํ์๋ง (์ค๋ฒ1, DFS) (0) | 2023.02.28 |
[๋ฐฑ์ค] (Swift) 1743๋ฒ - ์์๋ฌผ ํผํ๊ธฐ (DFS) (4) | 2023.02.27 |
[๋ฐฑ์ค] (Swift) 4963๋ฒ - ์ฌ์ ๊ฐ์ (DFS, ์ฌ๊ท) (0) | 2023.02.22 |
[๋ฐฑ์ค] (Swift) 2210๋ฒ - ์ซ์ํ ์ ํ (DFS, ์ฌ๊ท) (0) | 2023.02.22 |