[๋ฐฑ์ค 2468 ๐ฅ] ์์ ์์ญ
๋ฌธ์
์ฌ๋๋ฐฉ์ฌ์ฒญ์์๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ ์ฅ๋ง์ฒ ์ ๋๋นํด์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ๊ณํํ๊ณ ์๋ค. ๋จผ์ ์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ฅผ ํ์ ํ๋ค. ๊ทธ ๋ค์์ ๊ทธ ์ง์ญ์ ๋ง์ ๋น๊ฐ ๋ด๋ ธ์ ๋ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด ์ต๋๋ก ๋ช ๊ฐ๊ฐ ๋ง๋ค์ด ์ง๋ ์ง๋ฅผ ์กฐ์ฌํ๋ ค๊ณ ํ๋ค. ์ด๋, ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํ๊ธฐ ์ํ์ฌ, ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ ์ผ์ ํ ๋์ด ์ดํ์ ๋ชจ๋ ์ง์ ์ ๋ฌผ์ ์ ๊ธด๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ ํ๊ณผ ์ด์ ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ N์ธ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ์ฃผ์ด์ง๋ฉฐ ๋ฐฐ์ด์ ๊ฐ ์์๋ ํด๋น ์ง์ ์ ๋์ด๋ฅผ ํ์ํ๋ ์์ฐ์์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ N=5์ธ ์ง์ญ์ ๋์ด ์ ๋ณด์ด๋ค.
6 | 8 | 2 | 6 | 2 |
3 | 2 | 3 | 4 | 6 |
6 | 7 | 3 | 3 | 2 |
7 | 2 | 5 | 3 | 6 |
8 | 9 | 5 | 2 | 7 |
์ด์ ์์ ๊ฐ์ ์ง์ญ์ ๋ง์ ๋น๊ฐ ๋ด๋ ค์ ๋์ด๊ฐ 4 ์ดํ์ธ ๋ชจ๋ ์ง์ ์ด ๋ฌผ์ ์ ๊ฒผ๋ค๊ณ ํ์. ์ด ๊ฒฝ์ฐ์ ๋ฌผ์ ์ ๊ธฐ๋ ์ง์ ์ ํ์์ผ๋ก ํ์ํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.
6 | 8 | 2 | 6 | 2 |
3 | 2 | 3 | 4 | 6 |
6 | 7 | 3 | 3 | 2 |
7 | 2 | 5 | 3 | 6 |
8 | 9 | 5 | 2 | 7 |
๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด๋ผ ํจ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์ง์ ๋ค์ด ์, ์๋, ์ค๋ฅธ์ชฝ ํน์ ์ผ์ชฝ์ผ๋ก ์ธ์ ํด ์์ผ๋ฉฐ ๊ทธ ํฌ๊ธฐ๊ฐ ์ต๋์ธ ์์ญ์ ๋งํ๋ค. ์์ ๊ฒฝ์ฐ์์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ 5๊ฐ๊ฐ ๋๋ค(๊ผญ์ง์ ์ผ๋ก๋ง ๋ถ์ด ์๋ ๋ ์ง์ ์ ์ธ์ ํ์ง ์๋๋ค๊ณ ์ทจ๊ธํ๋ค).
๋ํ ์์ ๊ฐ์ ์ง์ญ์์ ๋์ด๊ฐ 6์ดํ์ธ ์ง์ ์ ๋ชจ๋ ์ ๊ธฐ๊ฒ ๋ง๋๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์๋ ๊ทธ๋ฆผ์์์ ๊ฐ์ด ๋ค ๊ฐ๊ฐ ๋จ์ ํ์ธํ ์ ์๋ค.
6 | 8 | 2 | 6 | 2 |
3 | 2 | 3 | 4 | 6 |
6 | 7 | 3 | 3 | 2 |
7 | 2 | 5 | 3 | 6 |
8 | 9 | 5 | 2 | 7 |
์ด์ ๊ฐ์ด ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์๋ ๋ค๋ฅด๊ฒ ๋๋ค. ์์ ์์ ๊ฐ์ ์ง์ญ์์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ฅธ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ์กฐ์ฌํด ๋ณด๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์ ์ค์์ ์ต๋์ธ ๊ฒฝ์ฐ๋ 5์์ ์ ์ ์๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด๋ค ์ง์ญ์ ๋ํ๋ด๋ 2์ฐจ์ ๋ฐฐ์ด์ ํ๊ณผ ์ด์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ N์ด ์ ๋ ฅ๋๋ค. N์ 2 ์ด์ 100 ์ดํ์ ์ ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ๊ฐ ์ค์๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ํ๋ถํฐ N๋ฒ์งธ ํ๊น์ง ์์๋๋ก ํ ํ์ฉ ๋์ด ์ ๋ณด๊ฐ ์ ๋ ฅ๋๋ค. ๊ฐ ์ค์๋ ๊ฐ ํ์ ์ฒซ ๋ฒ์งธ ์ด๋ถํฐ N๋ฒ์งธ ์ด๊น์ง N๊ฐ์ ๋์ด ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์์ฐ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ ๋ ฅ๋๋ค. ๋์ด๋ 1์ด์ 100 ์ดํ์ ์ ์์ด๋ค.
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.

๋ฌธ์ ํ์ด
import sys
from collections import deque
n=int(sys.stdin.readline())
maxheight=-1e9
minheight=1e9
heights=[]
for _ in range(n):
tmp=list(map(int, sys.stdin.readline().strip().split(' ')))
maxheight=max(maxheight, max(tmp))
minheight=min(minheight, min(tmp))
heights.append(tmp)
def bfs_find_safezone(y,x,h):
global heights, visited
queue=deque()
queue.append((y,x))
directions=[(0,1),(1,0),(0,-1),(-1,0)]
while queue:
cury, curx=queue.popleft()
for di in directions:
dy=cury+di[0]
dx=curx+di[1]
if 0<=dy<n and 0<=dx<n and visited[dy][dx]==0 and heights[dy][dx]>h:
queue.append((dy,dx))
visited[dy][dx]=1
ans=0
for h in range(minheight-1, maxheight):
visited=[[0]*n for _ in range(n)]
safezone_number=0
for i in range(n):
for j in range(n):
# h๋ณด๋ค ๋ ๋์ ๊ฑด๋ฌผ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋๋ค.
if heights[i][j]>h and visited[i][j]==0:
visited[i][j]=1
bfs_find_safezone(i,j,h)
safezone_number+=1
ans=max(ans, safezone_number)
print(ans)
- ์ง์ญ์ ๋์ด ์ ๋ณด๋ฅผ ์ ๋ ฅ๋ฐ์ผ๋ฉด์, ๊ฐ์ฅ ํฐ ์ง์ญ ๋์ด maxheight ์ ๊ฐ์ฅ ์์ ์ง์ญ ๋์ด minheight๋ฅผ ๊ตฌํ๋ค.
- ๊ฐ์ฅ ์์ ์ง์ญ ๋์ด๋ณด๋ค 1 ์์ ์๋ถํฐ(์ง์ญ์ด ๋ชจ๋ ์ ๊ธฐ์ง ์๋ ๊ฒฝ์ฐ) ๊ฐ์ฅ ํฐ ์ง์ญ ๋์ด๋ณด๋ค 1 ์์ ์๊น์ง(๊ฐ์ฅ ๋์ ์ง์ญ์ ์ ์ธํ๊ณ ์ง์ญ์ด ๋ชจ๋ ์ ๊ธฐ๋ ๊ฒฝ์ฐ) ๋น๊ฐ ์์ ์ฐจ์ค๋ก๋ ๋์ด๋ก ๋๊ณ for ๋ฐ๋ณต๋ฌธ์ ๋๋ฆฐ๋ค.
- ์ด ๋ถ๋ถ์์ ์๊ฐ์น ๋ชปํ ๋ถ๋ถ์ด ์์ด์ ์ฒ์์ ํต๊ณผ๋ฅผ ๋ฐ์ง ๋ชปํ๋ค. ์ฒ์์ minheight ๋ถํฐ maxheight-1๊น์ง ๋ฐ๋ณตํ์๋๋ฐ, ์ด๋ ๊ฒ ๋๋ฉด ์๊ธฐ๋ ๋ฌธ์ ์ ์ ๋ค์๊ณผ ๊ฐ๋ค.
2
1 1
1 1
# ๋ต : 1
# ์ถ๋ ฅ : 0
์ ์์์ ๊ฒฝ์ฐ minheight์ maxheight๊ฐ ๋ชจ๋ 1์ด ๋์ด์ for๋ฌธ ๋ฐ๋ณต ์์ฒด๊ฐ ๋์ง ์์์ ans์ ์ด๊ธฐ๊ฐ์ธ 0์ด ์ถ๋ ฅ๋๋ค.
ํ์ง๋ง 0.1~0.9์ ๋์ด๋งํผ ์ฐจ์ค๋ฅผ ๊ฒฝ์ฐ ๋ชจ๋ ์ง์ญ์ด ๋ฌผ์ ์ ๊ธฐ์ง ์์์ ์์ ์์ญ์ ๊ฐ์๊ฐ 1์ด ๋๋ฏ๋ก 0์ ์์ ์์ญ ๊ฐ์์ ์ต๋๊ฐ์ด ์๋๋ค. ์ด๋ฅผ ์ํด์ minheight๋ณด๋ค 1 ์์ ๋์ด๋ถํฐ ํ์ํด์ ๋ชจ๋ ์ง์ญ์ด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ๊ฒฝ์ฐ๋ ํ์ํด์ฃผ๋๋ก ๋ฐ๊ฟจ๋๋ ํต๊ณผ๊ฐ ๋๋ค.
- ์ดํ๋ ์ ํ์ ์ธ bfs๋ฅผ ํตํด์ ์์ญ ๊ตฌํ๊ธฐ์ธ๋ฐ, ๊ฐ ๋์ด๋ฅผ ํ์ํ ๋๋ง๋ค visited ๋ฐฐ์ด์ 0์ผ๋ก ์ด๊ธฐํํด์ฃผ๊ณ ํ์ฌ ๋น๋ฌผ์ ๋์ด๋ณด๋ค ํฐ ์ง์ญ์ ๋๋ฌํ ๊ฒฝ์ฐ bfs๋ฅผ ์ด์ฉํด์ ์ํ์ข์ฐ๋ก ์ฐ๊ฒฐ๋ ์ง์ญ์ ๋๋ฉด์ ํด๋น ์ง์ญ์ visited ๋ฐฐ์ด ๊ฐ์ 1๋ก ๋ง๋ค์ด์ค๋ค.
- ์ด๋ฌํ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ฉด์ ์์ง ๋ฐฉ๋ฌธํ์ง ์์์ผ๋ฉด์ ํ์ฌ ๋น๋ฌผ ๋์ด๋ณด๋ค ๋์ ์ง์ญ์ ๋ฐ๊ฒฌํ ๊ฒฝ์ฐ ์์ ์์ญ(๋ณ์ safezone)์ ๊ฐ์๋ฅผ +1 ํด์ค๋ค.
- ๊ฐ ๋น๋ฌผ์ ๋์ด๋ฅผ ๋ฐ๋ณต๋ฌธ์ ๋ง์น ๋๋ง๋ค ans์ ์ ์ฅ๋ ์์ ์์ญ์ ๊ฐ์๋ฅผ ๋ ํฐ ๊ฐ์ผ๋ก ๊ฐฑ์ ํด์ฃผ๊ณ ๋ฐ๋ณต๋ฌธ์ ๋ง์น ํ์ ans๋ฅผ ์ถ๋ ฅํด์ฃผ๋ฉด ๋๋ค.