๋ฌธ์
์ธ๋ก ์นธ, ๊ฐ๋ก ์นธ์ผ๋ก ๋ ํ ๋ชจ์์ ๋ณด๋๊ฐ ์๋ค. ๋ณด๋์ ๊ฐ ์นธ์๋ ๋๋ฌธ์ ์ํ๋ฒณ์ด ํ๋์ฉ ์ ํ ์๊ณ , ์ข์ธก ์๋จ ์นธ ( ํ ์ด) ์๋ ๋ง์ด ๋์ฌ ์๋ค.
๋ง์ ์ํ์ข์ฐ๋ก ์ธ์ ํ ๋ค ์นธ ์ค์ ํ ์นธ์ผ๋ก ์ด๋ํ ์ ์๋๋ฐ, ์๋ก ์ด๋ํ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ์ ์ง๊ธ๊น์ง ์ง๋์จ ๋ชจ๋ ์นธ์ ์ ํ ์๋ ์ํ๋ฒณ๊ณผ๋ ๋ฌ๋ผ์ผ ํ๋ค. ์ฆ, ๊ฐ์ ์ํ๋ฒณ์ด ์ ํ ์นธ์ ๋ ๋ฒ ์ง๋ ์ ์๋ค.
์ข์ธก ์๋จ์์ ์์ํด์, ๋ง์ด ์ต๋ํ ๋ช ์นธ์ ์ง๋ ์ ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค. ๋ง์ด ์ง๋๋ ์นธ์ ์ข์ธก ์๋จ์ ์นธ๋ ํฌํจ๋๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๊ณผ ๊ฐ ๋น์นธ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค. ( ) ๋์งธ ์ค๋ถํฐ ๊ฐ์ ์ค์ ๊ฑธ์ณ์ ๋ณด๋์ ์ ํ ์๋ ๊ฐ์ ๋๋ฌธ์ ์ํ๋ฒณ๋ค์ด ๋น์นธ ์์ด ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ๋ง์ด ์ง๋ ์ ์๋ ์ต๋์ ์นธ ์๋ฅผ ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ 1 ๋ณต์ฌ
2 4
CAAB
ADCB
์์ ์ถ๋ ฅ 1 ๋ณต์ฌ
3
์์ ์ ๋ ฅ 2 ๋ณต์ฌ
3 6
HFDFFB
AJHGDH
DGAGEH
์์ ์ถ๋ ฅ 2 ๋ณต์ฌ
6
์์ ์ ๋ ฅ 3 ๋ณต์ฌ
5 5
IEFCJ
FHFKC
FFALF
HFGCF
HMCHH
์์ ์ถ๋ ฅ 3 ๋ณต์ฌ
10
# ํ์ด ๋ฐฉ๋ฒ
๊น์ด ๋ค์ด๊ฐ๋ ์๊ณ ๋ฆฌ์ฆ์ด๊ธฐ ๋๋ฌธ์ dfs
๊ทธ๋ฌ๋ ์ฌ๋ฌ ๊ฒฝ๋ก ์ค ๊น๊ฒ ๋ค์ด๊ฐ์ผ ํ๊ธฐ ๋๋ฌธ์ ๋ฐฑํธ๋ํน ๊ธฐ๋ฒ์ ์ ์ฉํ๋ค. ์ด ๋ถ๋ถ์ด ์ด์ง ๋ฏธ์ํจ
์๊ฐ์ด๊ณผ๊ฐ ๊ณ์ ๋ ์ ๋๊ฐํ๋๋ฐ pypy ๋ฒ์ ์ผ๋ก ๋๋ฆฌ๋๊น ํด๊ฒฐ๋์๋ค.
์์ ๋ฌธ์ ์์๋ ๊บ ๋ฌ์์ง๋ง cnt๋ฅผ ๊ตฌํด์ผํ ๋๋ ์ธ์๋ฅผ ๊ฐ์ด ๋๊ฒจ์ฃผ๋๊ฒ ์ข๋ค
# ์ฝ๋
# 2025-04-14 13:20-37
import sys
sys.stdin = open("input.txt","r")
r, c = map(int,sys.stdin.readline().split())
graph = [list(sys.stdin.readline().strip()) for _ in range(r)]
visited = set()
# ์ํ์ข์ฐ
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def dfs(x,y,cnt):
global max_cnt
visited.add(graph[x][y])
max_cnt = max(max_cnt, cnt)
for i in range(4):
nx, ny = x + dx[i], y + dy[i]
if 0 <= nx < r and 0 <= ny < c:
if graph[nx][ny] not in visited:
dfs(nx,ny,cnt+1)
visited.remove(graph[x][y])
max_cnt = 0
dfs(0,0,1)
print(max_cnt)
'๐ Study > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Silver II] 10971 - ์ธํ์ ์ํ2 (0) | 2025.04.16 |
---|---|
[Gold IV] 3055 - ํ์ถ (0) | 2025.04.15 |
[Gold III] 1726 - ๋ก๋ด (0) | 2025.04.14 |
[Gold V] 14503 - ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2025.04.13 |
[Silver II] 2644 - ์ด์๊ณ์ฐ (0) | 2025.04.12 |