์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
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 |
29 | 30 |
Tags
- JS
- ์ฝ๋ํธ๋ฆฌ
- Java
- ์ฐ์ จ์์
- ํ์ด์ฌ
- c#
- JavaScript
- Flutter
- BAEKJOON
- ์คํฐ๋
- ๊ตฌํ
- ์๋ฐ์คํฌ๋ฆฝํธ
- ์ฝ๋ฉํ ์คํธ
- ์นด์นด์ค
- ๋์ ํ๋ก๊ทธ๋๋ฐ
- ํ๋ก๊ทธ๋๋จธ์ค
- ๊ทธ๋ํ ํ์
- ๋ฐฑ์ค
- Algorithm
- ๋ฌธ์์ด ํ์ฑ
- DP
- ์ด์งํ์
- ์๋ฃ๊ตฌ์กฐ
- BFS
- ์ผ์ฑsw์ญํ
- sort
- ์๊ณ ๋ฆฌ์ฆ
- DART
- programmers
- ๋ชป๊ทธ๋ฆฌ์ง๋ง
Archives
- Today
- Total
Algo ์ฐ์
[BaekJoon] 1012 ์ ๊ธฐ๋ ๋ฐฐ์ถ ๋ณธ๋ฌธ
โถ ๋ฌธ์ :
import sys
t = int(input())
sys.setrecursionlimit(10**6)
def dfs(a, b):
if a < 0 or a >= m or b < 0 or b >= n:
return
if graph[a][b] == 0:
return
graph[a][b] = 0
dfs(a - 1, b)
dfs(a, b - 1)
dfs(a + 1, b)
dfs(a, b + 1)
for _ in range(t):
m, n, k = map(int, input().split())
graph = [[0 for _ in range(n)]for _ in range(m)]
for _ in range(k):
a, b = map(int, input().split())
graph[a][b] = 1
result = 0
for a in range(m):
for b in range(n):
if graph[a][b] == 1:
dfs(a,b)
result += 1
print(result)
โถ ๋ฌธ์ ํ์ด
1. dfs() ์ ์ธ => ๋ฐฐ์ด์ ๋ฒ์๋ฅผ ๋ฒ์ด๋๊ฑฐ๋ ํด๋น ์นธ์ ๊ฐ์ด 0์ด๋ฉด ๋ฐํ ์๋ ๊ฒฝ์ฐ์ ํด๋น ์นธ๊ณผ ์ธ์ ํ๋ฉด์ 1์ ๊ฐ์ง ์นธ์ 0์ผ๋ก ๋ณํ
2. graph๋ฐ์ดํฐ๋ฅผ ์ํํ๋ฉฐ 1๊ฐ์ ๊ฐ์ง ์นธ์ ์ฐพ์ ํด๋น ์นธ๊ณผ ์ธ์ ํ 1๋ค์ 0์ผ๋ก ๋ณํ
3. ํ์ ์ข ๋ฃ์ 1์ ๊ฐ์ง ๊ตฐ์ง์ 0์ผ๋ก ๋ณํํ ๋์ ํ์๋ฅผ ์ผ result ๊ฐ์ ์ถ๋ ฅ
'๐ฏ CodingTest > BaekJoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BaekJoon] 1107 ๋ฆฌ๋ชจ์ปจ (0) | 2022.04.14 |
---|---|
[BaekJoon] 1074๋ฒ Z (0) | 2022.04.13 |
[BaekJoon] 1003 ํผ๋ณด๋์น ํจ์ (0) | 2022.04.12 |
[BaekJoon] 18111 ๋ง์ธํฌ๋ํํธ (0) | 2022.04.11 |
[BaekJoon] 15829 Hashing (0) | 2022.04.11 |