๋ฌธ์
๋ก๋ด ์ฒญ์๊ธฐ์ ๋ฐฉ์ ์ํ๊ฐ ์ฃผ์ด์ก์ ๋, ์ฒญ์ํ๋ ์์ญ์ ๊ฐ์๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ๋ฐฉ์ $ ํฌ๊ธฐ์ ์ง์ฌ๊ฐํ์ผ๋ก ๋ํ๋ผ ์ ์์ผ๋ฉฐ, ํฌ๊ธฐ์ ์ ์ฌ๊ฐํ ์นธ์ผ๋ก ๋๋์ด์ ธ ์๋ค. ๊ฐ๊ฐ์ ์นธ์ ๋ฒฝ ๋๋ ๋น ์นธ์ด๋ค. ์ฒญ์๊ธฐ๋ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด ์์ผ๋ฉฐ, ์ด ๋ฐฉํฅ์ ๋, ์, ๋จ, ๋ถ ์ค ํ๋์ด๋ค. ๋ฐฉ์ ๊ฐ ์นธ์ ์ขํ ๋ก ๋ํ๋ผ ์ ์๊ณ , ๊ฐ์ฅ ๋ถ์ชฝ ์ค์ ๊ฐ์ฅ ์์ชฝ ์นธ์ ์ขํ๊ฐ , ๊ฐ์ฅ ๋จ์ชฝ ์ค์ ๊ฐ์ฅ ๋์ชฝ ์นธ์ ์ขํ๊ฐ ์ด๋ค. ์ฆ, ์ขํ ๋ ๋ถ์ชฝ์์ ๋ฒ์งธ์ ์๋ ์ค์ ์์ชฝ์์ ๋ฒ์งธ ์นธ์ ๊ฐ๋ฆฌํจ๋ค. ์ฒ์์ ๋น ์นธ์ ์ ๋ถ ์ฒญ์๋์ง ์์ ์ํ์ด๋ค.
๋ก๋ด ์ฒญ์๊ธฐ๋ ๋ค์๊ณผ ๊ฐ์ด ์๋ํ๋ค.
- ํ์ฌ ์นธ์ด ์์ง ์ฒญ์๋์ง ์์ ๊ฒฝ์ฐ, ํ์ฌ ์นธ์ ์ฒญ์ํ๋ค.
- ํ์ฌ ์นธ์ ์ฃผ๋ณ ์นธ ์ค ์ฒญ์๋์ง ์์ ๋น ์นธ์ด ์๋ ๊ฒฝ์ฐ,
- ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ์ ์งํ ์ฑ๋ก ํ ์นธ ํ์งํ ์ ์๋ค๋ฉด ํ ์นธ ํ์งํ๊ณ 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
- ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ๋ค์ชฝ ์นธ์ด ๋ฒฝ์ด๋ผ ํ์งํ ์ ์๋ค๋ฉด ์๋์ ๋ฉ์ถ๋ค.
- ํ์ฌ ์นธ์ ์ฃผ๋ณ ์นธ ์ค ์ฒญ์๋์ง ์์ ๋น ์นธ์ด ์๋ ๊ฒฝ์ฐ,
- ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค.
- ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ ๊ธฐ์ค์ผ๋ก ์์ชฝ ์นธ์ด ์ฒญ์๋์ง ์์ ๋น ์นธ์ธ ๊ฒฝ์ฐ ํ ์นธ ์ ์งํ๋ค.
- 1๋ฒ์ผ๋ก ๋์๊ฐ๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ฐฉ์ ํฌ๊ธฐ ๊ณผ ์ด ์ ๋ ฅ๋๋ค. (3≤N,M≤50) โ ๋์งธ ์ค์ ์ฒ์์ ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์นธ์ ์ขํ ์ ์ฒ์์ ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ ๊ฐ ์ ๋ ฅ๋๋ค. ๊ฐ $ ์ธ ๊ฒฝ์ฐ ๋ถ์ชฝ, ์ธ ๊ฒฝ์ฐ ๋์ชฝ, ์ธ ๊ฒฝ์ฐ ๋จ์ชฝ, ์ธ ๊ฒฝ์ฐ ์์ชฝ์ ๋ฐ๋ผ๋ณด๊ณ ์๋ ๊ฒ์ด๋ค.
์ ์งธ ์ค๋ถํฐ ๊ฐ์ ์ค์ ๊ฐ ์ฅ์์ ์ํ๋ฅผ ๋ํ๋ด๋ ๊ฐ์ ๊ฐ์ด ํ ์ค์ ๊ฐ์ฉ ์ ๋ ฅ๋๋ค. ๋ฒ์งธ ์ค์ ๋ฒ์งธ ๊ฐ์ ์นธ ์ ์ํ๋ฅผ ๋ํ๋ด๋ฉฐ, ์ด ๊ฐ์ด ์ธ ๊ฒฝ์ฐ ๊ฐ ์ฒญ์๋์ง ์์ ๋น ์นธ์ด๊ณ , ์ธ ๊ฒฝ์ฐ ์ ๋ฒฝ์ด ์๋ ๊ฒ์ด๋ค. ๋ฐฉ์ ๊ฐ์ฅ ๋ถ์ชฝ, ๊ฐ์ฅ ๋จ์ชฝ, ๊ฐ์ฅ ์์ชฝ, ๊ฐ์ฅ ๋์ชฝ ์ค ์ค ํ๋ ์ด์์ ์์นํ ๋ชจ๋ ์นธ์๋ ๋ฒฝ์ด ์๋ค. ๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋ ์นธ์ ํญ์ ๋น ์นธ์ด๋ค.
์ถ๋ ฅ
๋ก๋ด ์ฒญ์๊ธฐ๊ฐ ์๋์ ์์ํ ํ ์๋์ ๋ฉ์ถ ๋๊น์ง ์ฒญ์ํ๋ ์นธ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
3 3
1 1 0
1 1 1
1 0 1
1 1 1
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
1
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
11 10
7 4 0
1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 1 1 1 1 0 1
1 0 0 1 1 0 0 0 0 1
1 0 1 1 0 0 0 0 0 1
1 0 0 0 0 0 0 0 0 1
1 0 0 0 0 0 0 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 1 1 0 1
1 0 0 0 0 0 0 0 0 1
1 1 1 1 1 1 1 1 1 1
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
57
# ํ์ด ๋ฐฉ๋ฒ
์ฌ๊ท์ ํน์ง์ ๊ฐ๊ธฐ ๋๋ฌธ์ dfs๋ก ์ ๊ทผํ๋ค.
์ฃผ๋ณ ์นธ ์ค ์ฒญ์๋์ง ์์ ๋น ์นธ์ด ์๋ ๊ฒฝ์ฐ์ ์๋ ๊ฒฝ์ฐ ๊ฐ๊ฐ์ ์ฝ๋๋ ๊ตฌํ์ด ์ด๋ ต์ง ์์๋๋ฐ
์ด๊ฑธ ๋ฌถ๋ ๊ณผ์ ์์ ์ข ํค๋งธ๋๊ฑฐ ๊ฐ๋ค.
# ์ฝ๋
# 2025-04-13 03:20-40
import sys
sys.stdin = open("input.txt","r")
n, m = map(int,sys.stdin.readline().split())
r,c,d = map(int,sys.stdin.readline().split())
graph = [list(map(int,sys.stdin.readline().split())) for _ in range(n)]
# ๋ถ ๋ ๋จ ์
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
# 0: ์ฒญ์ x / 1: ๋ฒฝ / 2: ์ฒญ์ o
def dfs(x,y,d):
global cnt
if graph[x][y] == 0:
graph[x][y] = 2
cnt += 1
for _ in range(4):
d = (d + 3) % 4 # ๋ฐ์๊ณ 90๋ ํ์
nx, ny = x + dx[d], y + dy[d]
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
dfs(nx, ny, d)
return
# ์ฃผ๋ณ 4์นธ ์ค ์ฒญ์๋์ง ์์ ๋น์นธ์ด ์๋ ๊ฒฝ์ฐ
bx, by = x - dx[d], y - dy[d] # ํ ์นธ ํ์ง
if 0 <= bx < n and 0 <= by < m and graph[bx][by] != 1:
dfs(bx, by, d)
cnt = 0
dfs(r,c,d)
print(cnt)
# ์ฐธ๊ณ
์ฒซ ์๋ํ์ ๋
๋ฒฝ๊ณผ ์ฒญ์o๋ฅผ ๊ตฌ๋ถํ์ง ์๊ณ
๋ถํ์ํ all_cleanํจ์๋ฅผ ๊ตฌํํ๋ ํ์ ์คํจํ์
# 2025-04-12 16:05-17:00
import sys
# sys.stdin = open("input.txt","r")
sys.setrecursionlimit(10**6)
n, m = map(int,sys.stdin.readline().split())
r, c, d = map(int,sys.stdin.readline().split())
graph = [list(map(int,sys.stdin.readline().split())) for _ in range(n)]
# ์ ์ค ์๋ ์ผ
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
def all_clean(x,y):
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < n and 0 <= ny < m:
if graph[nx][ny] == 0:
return False
return True
def dfs(x,y,d):
global cnt
if graph[x][y] == 0: # ํ์ฌ ์นธ์ด ์ฒญ์๋์ง ์์ ๊ฒฝ์ฐ
cnt += 1
graph[x][y] = 1 # ์ฒญ์ํ๊ธฐ
# ํ์ฌ ์นธ์ ์ฃผ๋ณ 4์นธ ์ค ์ฒญ์๋์ง ์์ ๋น ์นธ์ด ์๋ ๊ฒฝ์ฐ
if all_clean(x,y):
nx, ny = x - dx[d], y - dy[d]
if nx <= -1 or nx >= n or ny <= -1 or ny >= m:
return
dfs(nx,ny,d)
# ํ์ฌ ์นธ์ ์ฃผ๋ณ 4์นธ ์ค ์ฒญ์๋์ง ์์ ๋น ์นธ์ด ์๋ ๊ฒฝ์ฐ
else:
d = (d - 1) % 4
nx, ny = x + dx[d], y + dy[d]
if 0 <= nx < n and 0 <= ny < m and graph[nx][ny] == 0:
dfs(nx,ny,d)
else:
dfs(x,y,d)
cnt = 0
dfs(r,c,d)
print(cnt)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Gold IV] 1987 - ์ํ๋ฒณ (0) | 2025.04.14 |
---|---|
[Gold III] 1726 - ๋ก๋ด (0) | 2025.04.14 |
[Silver II] 2644 - ์ด์๊ณ์ฐ (0) | 2025.04.12 |
[Silver I] 1697- ์จ๋ฐ๊ผญ์ง (0) | 2025.04.10 |
[Silver II] 11724 - ์ฐ๊ฒฐ ์์์ ๊ฐ์ (0) | 2025.04.10 |