ํฐ์คํ ๋ฆฌ ๋ทฐ
728x90
๐ฉ ๊ทธ๋ํ์ด๋ก , ๊ทธ๋ํํ์, DFS, BFS
thinking
์ํ์ข์ฐ ๋ค ํ์ํ๋ฉด์ ๋ฐฉ๋ฌธํ์ํ๊ณ ๊ฐ์ด 1์ด๋ฉด(==๋ฐฐ์ถ๋ฉด) ์นด์ดํ 1 ์ฆ๊ฐ
โญ ์ฒ์์ ๊ทธ๋ฅ ํ์๋๋ ๋ฐํ์์๋ฌ๊ฐ ๋ฌ๋ค.
๊ตฌ๊ธ๋ง ํ๋๋ ์ฌ๊ท limit์ ์ค์ ํด์ฃผ์ง ์์์ ๋ฐ์ํ ๋ฌธ์ ๋ผ๊ณ ํ๋ค.
K(1 ≤ K ≤ 2500)์ ๋ฒ์๊ฐ ์์ฒญ ์ปค์ ๊ทธ๋ฐ๋ฏ?
ํ์ด์ฌ์ ๊ธฐ๋ณธ ์ฌ๊ท ํ๋๊ฐ (1000)์ด์ด์ ์ฌ๊ท ๊น์ด๊ฐ 1000์ ๋์ด๊ฐ ๊ฒฝ์ฐ ๋ชจ๋์ ์ถ๊ฐํด์ค์ผํ๋ค.
ํ์ด์ฌ ์ต๋ ์ฌ๊ท ๊น์ด ๋๋ฆฌ๋ ๋ชจ๋
import sys
sys.setrecursionlimit(ํ์ํ๊ณ ์ํ๋ ๊น์ด)
์ฝ๋
import sys
sys.setrecursionlimit(10000)
def dfs(r,c):
dr = [0, 1, 0, -1]
dc = [1, 0, -1, 0]
a[r][c] = -1 # ๋ฐฉ๋ฌธ์ฒดํฌ
for d in range(4):
nr = r + dr[d]
nc = c + dc[d]
if nr < 0 or nr >= N or nc < 0 or nc >= M: # ๋ฒ์์ฒดํฌ
continue
if a[nr][nc] == 1:
a[nr][nc] = -1 # ๋ฐฉ๋ฌธ์ฒดํฌ
dfs(nr,nc)
T = int(input())
for tc in range(1, T+1):
M, N, K = map(int, input().split()) # M:๊ฐ๋ก๊ธธ์ด(์ด ๊ธธ์ด), N:์ธ๋ก๊ธธ์ด(ํ ๊ธธ์ด), K:๋ฐฐ์ถ๊ฐ์
a = [[0] * M for _ in range(N)] # ๋ฐฐ์ถ๋ฐญ
for _ in range(K): # ๋ฐฐ์ถ 1๋ก ๋ฐ๊พธ๊ธฐ
c, r = map(int, input().split())
a[r][c] = 1
cnt = 0
for i in range(N):
for j in range(M):
if a[i][j] == 1: # ๋ฐฐ์ถ๋ฉด ์นด์ดํธ+1 & ๋ฐฉํฅ ํ์
dfs(i,j)
cnt += 1
print(cnt)
ํ์คํ๊ธฐ
๋ฐฑ์ค์ ๋ฐํ์์๋ฌ๊ฐ ๋จ๋ฉด ๋ญ๋๋ฌธ์ ๋ฌ ๊ฑด์ง ์๋ ค์คฌ์ ์ข๊ฒ ๋ค
'algorithm > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 1389. ์ผ๋น ๋ฒ ์ด์ปจ์ 6๋จ๊ณ ๋ฒ์น / python ํ์ด์ฌ (0) | 2021.04.08 |
---|---|
[๋ฐฑ์ค] 1260. DFS์ BFS / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1003. ํผ๋ณด๋์น ํจ์ / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 1074. Z / python ํ์ด์ฌ (0) | 2021.04.08 |
[๋ฐฑ์ค] 2630. ์์ข ์ด ๋ง๋ค๊ธฐ / python ํ์ด์ฌ (0) | 2021.04.08 |
๋๊ธ
๊ธ ๋ณด๊ดํจ
TAG
- ์์ด๋๋ง์๊ธฐ
- 20056 ๋ง๋ฒ์ฌ ์์ด์ ํ์ด์ด๋ณผ
- Python
- merge์๋ฌ
- 17406 ๋ฐฐ์ด๋๋ฆฌ๊ธฐ4
- ๊ธฐ์ง๊ตญ์ค์น
- 20057 ๋ง๋ฒ์ฌ ์์ด์ ํ ๋ค์ด๋
- BFS
- 21609 ์์ด ์คํ๊ต
- react
- 2018 ์นด์นด์ค ๊ณต์ฑ
- dp
- ์๊ณ ๋ฆฌ์ฆ
- merge ์๋ฌ
- ์ผ์ฑ์ฝํ
- ๋ธ๋ฃจํธํฌ์ค
- dfs
- 2579 ๊ณ๋จ์ค๋ฅด๊ธฐ
- git ๋ฏธ๋ฌ๋ง
- ํ์ด์ฌ
- swea
- ํ๋ก๊ทธ๋๋จธ์ค
- ๋ฐฑ์ค
- ๋ณด์์ผํ
- ์ผ์ฑ๊ธฐ์ถ
์ต๊ทผ์ ์ฌ๋ผ์จ ๊ธ
- Total
- Today
- Yesterday
์ต๊ทผ์ ๋ฌ๋ฆฐ ๋๊ธ