λΉμ·ν μ νμ λ¬Έμ κ° λλ €μ λμ¨λ€λ λ§μ 곡κ°νλ μμ¦,,,
λ λ€μν μ νμ λ¬Έμ λ₯Ό νμ΄λ³΄κΈ° μν΄μ λ Έλ ₯ν΄μΌκ²λ€! κ·Έλ¦¬κ³ ν루μ 2λ¬Έμ λ§ νΈλ건 λ무 μ μΌλ, μ΅μ 3λ¬Έμ μ΄μμ νμ΄μΌκ²λ€.
μμ’μ’ νμ΄ν
β«οΈ λ¬Έμ
https://www.acmicpc.net/problem/14716
β«οΈ λμ νμ΄
μλ,,, μ΄μ½ν μλ£μ μΌλ¦¬κΈ°, νΉμ λ°©κΈ μ μ νμ΄λ³Έ λ°±μ€ μλ¬Έμ ... λ±λ± λ무λ무 λΉμ·ν μ νμ λ¬Έμ λ€μ΄λ€. μ΄λ° λ¬Έμ μ νμ μ λ§ μ νμ μμκ²κ°λ€λ μμ κ°μ΄ λ§κ΅¬ μμλλ€. μ΄μ DFS κ΄λ ¨ν΄μ λ€λ₯Έ μ νμ λ¬Έμ λ₯Ό νμ΄λ΄μΌκ² λ€.
λ¬Έμ λ₯Ό 보μλ§μ, κ·Έλ₯ DFSλλ €μ κΈμκ° μλ λΆλΆμ νμν΄μ£Όλ λ°©μμ μκ°νλ€. κ·Έλ¦¬κ³ κΈμκ° μλκ³³μ λ°©λ¬Ένλ©΄ μ λΆ λ°©λ¬Έμ²λ¦¬λ₯Ό ν΄μ€λ²λ¦¬λ κ²μ΄μ§ ... λ±ν depthλ μμμ΄ μΌλ§λ 컀μ‘λμ§μ λν μ²λ¦¬κ° νμνμ§ μμ κ°λ¨ν λ¬Έμ λ€.
λ¬Έμ λ₯Ό μ΄λ»κ² νμλμ§ κ·Έλ¦ΌμΌλ‘ κ·Έλ €μ μκ°νλ μ΅κ΄μ νμ±νκΈ° μν΄μ νμ μμ΄ν¨λλ₯Ό κ°μ§κ³ λ€λλ©΄μ μλμ²λΌ μμ±νκ³ μ½λλ₯Ό μμ±νλ€. μ΄λ κ² νκ² λλ©΄ λμ€μ μ½λλ₯Ό μμ±νλ©΄μ μκ°μ΄ λ κΌ¬μ΄λ κ² κ°λ€.
β«οΈ μ λ΅μ½λ
import Foundation
let mn = readLine()!.split(separator: " ").map{ Int($0)! }
var banner = [[Int]]()
for _ in 0..<mn[0] {
banner.append(readLine()!.split(separator: " ").map{ Int($0)! })
}
var cnt = 0
// λ°©ν₯ν€ : μ ν μ’ μ° μΌμͺ½μ μΌμͺ½μλ μ€λ₯Έμͺ½μ μ€λ₯Έμͺ½μλ
let dx = [-1, 1, 0, 0, -1, 1, -1, 1]
let dy = [0, 0, -1, 1, -1, -1, 1, 1]
private func dfs(x: Int, y: Int) {
banner[x][y] = 0
for i in 0..<8 {
let nx = x + dx[i]
let ny = y + dy[i]
if nx < 0 || ny < 0 || nx >= mn[0] || ny >= mn[1] {
continue
}
if banner[nx][ny] == 1 {
dfs(x: nx, y: ny)
}
}
}
for i in 0..<mn[0] {
for j in 0..<mn[1] {
if banner[i][j] == 1 {
cnt += 1
dfs(x: i, y: j)
}
}
}
print(cnt)
'Algorithm > Baekjoon' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[λ°±μ€] (Swift) 3055λ² - νμΆ (골λ4) (BFS) (0) | 2023.03.03 |
---|---|
[λ°±μ€] (Swift) 10026λ² - μ λ‘μμ½ (골λ5) (DFS) (0) | 2023.03.03 |
[λ°±μ€] (Swift) 3184λ² - μ (μ€λ²1) (DFS) (1) | 2023.02.28 |
[λ°±μ€] (Swift) 1743λ² - μμλ¬Ό νΌνκΈ° (DFS) (4) | 2023.02.27 |
[λ°±μ€] (Swift) 4963λ² - μ¬μ κ°μ (DFS, μ¬κ·) (0) | 2023.02.22 |