์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ
- ๋ธ๋ฃจํธํฌ์ค
- Queue
- ๋ถํ ์ ๋ณต
- WebApp
- ์ฝ๋ฉํ ์คํธ
- ์ฝํ
- ๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ
- dfs
- ์์
- BFS
- ๋ฐฑํธ๋ํน
- ๋ถํ ํ์
- ๋ฐฑ์ค
- ๋ถํ ์ ๋ณต
- WebView
- SwiftUI
- ios
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋นํธ์ฐ์ฐ์
- ์ด์งํ์
- ์คํ
- Swift
- ๋์ ํฉ
- dp
- ์ ํด๋ฆฌ๋ ํธ์ ๋ฒ
- ์๊ณ ๋ฆฌ์ฆ
- ๋ฌธ์์ด
- Today
- Total
MUKER_DEV with iOS
[swift] ๋ฐฑ์ค - 1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ ๋ณธ๋ฌธ
1012๋ฒ: ์ ๊ธฐ๋ ๋ฐฐ์ถ
์ฐจ์ธ๋ ์๋์ธ ํ๋๋ ๊ฐ์๋ ๊ณ ๋ญ์ง์์ ์ ๊ธฐ๋ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๊ธฐ๋ก ํ์๋ค. ๋์ฝ์ ์ฐ์ง ์๊ณ ๋ฐฐ์ถ๋ฅผ ์ฌ๋ฐฐํ๋ ค๋ฉด ๋ฐฐ์ถ๋ฅผ ํด์ถฉ์ผ๋ก๋ถํฐ ๋ณดํธํ๋ ๊ฒ์ด ์ค์ํ๊ธฐ ๋๋ฌธ์, ํ๋๋ ํด์ถฉ ๋ฐฉ์ง์
www.acmicpc.net
๋ฌธ์ ํธ๋ ๋ฐ ์์ด ๋์์ด ๋๋๋ก ๋์ ํ์ด์ ๊ฐ์ ๋ ํ์ด๋ฅผ ์ฌ๋ฆฝ๋๋ค.
๋ํ ํ์ด ํ ๋ค๋ฅธ ์ฌ๋์ ํ์ด๋ฅผ ๋ณด๊ณ ์ฐธ๊ณ ํ ๋งํ ํ์ด๋ ์ฌ๋ฆฝ๋๋ค.
- ๋ฌธ์ ์ ๋ฐ๋ผ ๋์ ํ์ด๋ง ์์ ์ ์์ต๋๋ค.
- ํด๋น ํ์ด๋ค์ ํ์ด ์ค ํ๋์ผ ๋ฟ ์ต์ ์ ํ์ด๋ ์๋ ์ ์์ต๋๋ค.
๋์ ํ์ด
let input = Int(readLine()!)!
var farm = [[Bool]]() // 1
var visited = [[Bool]]()
let dirX = [1, -1, 0, 0]
let dirY = [0, 0, 1, -1]
func dfs(_ y: Int, _ x: Int) {
visited[y][x] = true
for i in 0...3 {
let newX = x + dirX[i]
let newY = y + dirY[i]
if farm[newY][newX] && !visited[newY][newX] {
dfs(newY, newX)
}
}
}
for _ in 0..<input {
let WHK = readLine()!.split(separator: " ").map { Int($0)! }
farm = Array(repeating: Array(repeating: false, count: WHK[0]+2), count: WHK[1]+2) // 2
visited = farm
var result = 0
for _ in 0..<WHK[2] {
let bug = readLine()!.split(separator: " ").map { Int($0)! }
farm[bug[1]+1][bug[0]+1] = true // 3
}
for i in 1...WHK[1] {
for j in 1...WHK[0] {
if farm[i][j] && !visited[i][j] {
dfs(i,j)
result += 1
}
}
}
print(result)
}
DFS(๊น์ด์ฐ์ ํ์)๋ฅผ ์ฌ์ฉํ์ฌ ํผ ์ฒซ ๋ฒ์งธ ํ์ด๋ค.
DFS์ ๋ฌธ์ผ๋ก ์์ฃผ ์ข์ ๊ธฐ๋ณธ๋ฌธ์ ๋ค.
ํธํ๊ฒ ๋์ง์ด ๋ณด๊ธฐ์ํด ์ฃผ์์ ๋ฌ์๋จ๋ค.
์ฃผ์ ์์๋ก ์ค๋ช ํด๋ณผ๋ ค๊ณ ํ๋ค.
// 1
ํ์ฌ ํ์ด๋ ์ ์์ ์ธ ํ์ด๋ผ ํ ์ ์๋๋ฐ
๊ธฐ๋ณธ๋ฐฐ์ด(farm)๊ณผ ๋ฐฉ๋ฌธ๋ฐฐ์ด(visited)๋ฅผ ๋๋ ์ ํธ๋ ๊ฑธ ๋งํ๋ค.
farm์ ์ฐ๋ฆฌ๊ฐ ํ์ํด์ผ ํ๋ ๋ถ๋ถ์ ์ ์ฅํ๊ณ ์๊ณ
visited๋ ๋ฐฉ๋ฌธํ ๊ณณ์ ์ ์ฅํ๊ณ ์๋ค.
์ด ๋ฐฉ๋ฒ ๋ง๊ณ ๊ธฐ๋ณธ๋ฐฐ์ด์์ ๋ฐฉ๋ฌธํ๋ ๋ก์ง์ ํฉ์ณ ๋ฌธ์ ๋ฅผ ํ ์๋ ์๋ค.
ํ์ง๋ง ์ฒซ๋ฌธ์ ์ธ๋งํผ ์ ์์ผ๋ก ๊ธฐ๋ณธ๋ฐฐ์ด๊ณผ, ๋ฐฉ๋ฌธ๋ฐฐ์ด ๋ ๊ฐ๋ฅผ ์ด๊ธฐํ์์ผฐ๋ค.
// 2
๋ฐฐ์ด x ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ๋น ๊ณต๊ฐ์ ๋์๊ณ
y ์์ชฝ, ์๋์ชฝ์๋ ๋น ๊ณต๊ฐ์ ๋์๋ค.
ํ์์ ํ ๋ ์ธ๋ฑ์ค๊ฐ ๋์น์ง ์๊ฒ ํ๊ธฐ ์ํจ!
0 | 0 | 0 | 0 | ||
0 | 0 | 0 | 0 | ||
0 | 0 | 0 | 0 | ||
0 | 0 | 0 | 0 | ||
์ธ๋ฑ์ค๊ฐ 0์ผ ๋ ์ผ์ชฝ์ผ๋ก ๊ฐ๋ค๋ฉด ์๋ฌ๊ฐ ๋๊ฒ ์ง๋ง
๋น๊ณต๊ฐ์ ๋์๊ธฐ ๋๋ฌธ์ ์ฒซ ์ธ๋ฑ์ค๊ฐ 1์ด๋ค.
๋ฐ๋ผ์ ์ผ์ชฝ์ผ๋ก ์ด๋ํ๋ค๊ณ ํด๋ ์๋ฌ๊ฐ ๋์ง ์๋๋ค.
// 3
๋น๊ณต๊ฐ์ ์๊ฐํด์ +1์ฉ ๋ํด ํ ๋นํ๋ค.
'๐ค ์๊ณ ๋ฆฌ์ฆ > BAEKJOON' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[swift] ๋ฐฑ์ค - 11659๋ฒ: ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 4 (0) | 2023.03.07 |
---|---|
[swift] ๋ฐฑ์ค - 17219๋ฒ: ๋น๋ฐ๋ฒํธ ์ฐพ๊ธฐ (0) | 2023.03.06 |
[swift] ๋ฐฑ์ค - 1003๋ฒ: ํผ๋ณด๋์น ํจ์ (0) | 2023.03.01 |
[swift] ๋ฐฑ์ค - 1764๋ฒ: ๋ฃ๋ณด์ก (0) | 2023.02.26 |
[swift] ๋ฐฑ์ค - 1620๋ฒ: ๋๋์ผ ํฌ์ผ๋ชฌ ๋ง์คํฐ ์ด๋ค์ (0) | 2023.02.25 |