-
[Python] ๋ฐฑ์ค - 2468 ์์ ์์ญ__Python/__Algorithm 2022. 2. 22. 14:00
๋ฌธ์
https://www.acmicpc.net/problem/2468
๐น ๋ฌธ์
์ฌ๋๋ฐฉ์ฌ์ฒญ์์๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ ์ฅ๋ง์ฒ ์ ๋๋นํด์ ๋ค์๊ณผ ๊ฐ์ ์ผ์ ๊ณํํ๊ณ ์๋ค. ๋จผ์ ์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ฅผ ํ์ ํ๋ค. ๊ทธ ๋ค์์ ๊ทธ ์ง์ญ์ ๋ง์ ๋น๊ฐ ๋ด๋ ธ์ ๋ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด ์ต๋๋ก ๋ช ๊ฐ๊ฐ ๋ง๋ค์ด ์ง๋ ์ง๋ฅผ ์กฐ์ฌํ๋ ค๊ณ ํ๋ค. ์ด๋, ๋ฌธ์ ๋ฅผ ๊ฐ๋จํ๊ฒ ํ๊ธฐ ์ํ์ฌ, ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ ์ผ์ ํ ๋์ด ์ดํ์ ๋ชจ๋ ์ง์ ์ ๋ฌผ์ ์ ๊ธด๋ค๊ณ ๊ฐ์ ํ๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๋ ํ๊ณผ ์ด์ ํฌ๊ธฐ๊ฐ ๊ฐ๊ฐ N์ธ 2์ฐจ์ ๋ฐฐ์ด ํํ๋ก ์ฃผ์ด์ง๋ฉฐ ๋ฐฐ์ด์ ๊ฐ ์์๋ ํด๋น ์ง์ ์ ๋์ด๋ฅผ ํ์ํ๋ ์์ฐ์์ด๋ค. ์๋ฅผ ๋ค์ด, ๋ค์์ N=5์ธ ์ง์ญ์ ๋์ด ์ ๋ณด์ด๋ค.
๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ด๋ผ ํจ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์ง์ ๋ค์ด ์, ์๋, ์ค๋ฅธ์ชฝ ํน์ ์ผ์ชฝ์ผ๋ก ์ธ์ ํด ์์ผ๋ฉฐ ๊ทธ ํฌ๊ธฐ๊ฐ ์ต๋์ธ ์์ญ์ ๋งํ๋ค. ์์ ๊ฒฝ์ฐ์์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ 5๊ฐ๊ฐ ๋๋ค(๊ผญ์ง์ ์ผ๋ก๋ง ๋ถ์ด ์๋ ๋ ์ง์ ์ ์ธ์ ํ์ง ์๋๋ค๊ณ ์ทจ๊ธํ๋ค).
๋ํ ์์ ๊ฐ์ ์ง์ญ์์ ๋์ด๊ฐ 6์ดํ์ธ ์ง์ ์ ๋ชจ๋ ์ ๊ธฐ๊ฒ ๋ง๋๋ ๋ง์ ๋น๊ฐ ๋ด๋ฆฌ๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์๋ ๊ทธ๋ฆผ์์์ ๊ฐ์ด ๋ค ๊ฐ๊ฐ ๋จ์ ํ์ธํ ์ ์๋ค.
์ด์ ๊ฐ์ด ์ฅ๋ง์ฒ ์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ผ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์๋ ๋ค๋ฅด๊ฒ ๋๋ค. ์์ ์์ ๊ฐ์ ์ง์ญ์์ ๋ด๋ฆฌ๋ ๋น์ ์์ ๋ฐ๋ฅธ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ์กฐ์ฌํด ๋ณด๋ฉด ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ๊ฐ์ ์ค์์ ์ต๋์ธ ๊ฒฝ์ฐ๋ 5์์ ์ ์ ์๋ค.
์ด๋ค ์ง์ญ์ ๋์ด ์ ๋ณด๊ฐ ์ฃผ์ด์ก์ ๋, ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ๊ณ์ฐํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐น ์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์ด๋ค ์ง์ญ์ ๋ํ๋ด๋ 2์ฐจ์ ๋ฐฐ์ด์ ํ๊ณผ ์ด์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ N์ด ์ ๋ ฅ๋๋ค. N์ 2 ์ด์ 100 ์ดํ์ ์ ์์ด๋ค. ๋์งธ ์ค๋ถํฐ N๊ฐ์ ๊ฐ ์ค์๋ 2์ฐจ์ ๋ฐฐ์ด์ ์ฒซ ๋ฒ์งธ ํ๋ถํฐ N๋ฒ์งธ ํ๊น์ง ์์๋๋ก ํ ํ์ฉ ๋์ด ์ ๋ณด๊ฐ ์ ๋ ฅ๋๋ค. ๊ฐ ์ค์๋ ๊ฐ ํ์ ์ฒซ ๋ฒ์งธ ์ด๋ถํฐ N๋ฒ์งธ ์ด๊น์ง N๊ฐ์ ๋์ด ์ ๋ณด๋ฅผ ๋ํ๋ด๋ ์์ฐ์๊ฐ ๋น ์นธ์ ์ฌ์ด์ ๋๊ณ ์ ๋ ฅ๋๋ค. ๋์ด๋ 1์ด์ 100 ์ดํ์ ์ ์์ด๋ค.
๐น ์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ฅ๋ง์ฒ ์ ๋ฌผ์ ์ ๊ธฐ์ง ์๋ ์์ ํ ์์ญ์ ์ต๋ ๊ฐ์๋ฅผ ์ถ๋ ฅํ๋ค.
ํ์ด ๋ฐฉ๋ฒ
๐น ๊ทธ๋ํ ํ์
๐น BFS(๋๋น์ฐ์ ํ์)
๐น ํ๋ ธ์ต๋๋ค ํด๊ฒฐ > ์ ์ถ๋ ฅ ์์ ํ๋จ์ ์ถ๊ฐ ์ ๋ณด๊ฐ ์์๋ค. "์๋ฌด ์ง์ญ๋ ๋ฌผ์ ์ ๊ธฐ์ง ์์ ์๋ ์๋ค."
์ฆ, ๋ชจ๋ ์์ญ์ ์ต์ ๋์ด ์ดํ๋ก ๋ฌผ์ ์ ๊ฒผ์ ์๋ ์๋ค. (๊ฐ ์์ญ ๋์ด 3~9, 2 ์ดํ๋ก ๋ฌผ์ ์ ๊ฒผ์ ๋)
๋ํ, ๋น๊ฐ ์ ํ ๋ด๋ฆฌ์ง ์์์ ์๋ ์๋ค. (๋ฌผ์ ์ ๊ธด ๊น์ด 0)
๐น DFS ํ์ด ์, ๋ฐํ์ ์๋ฌ(RecursionError)๋ฅผ ํด๊ฒฐํ์ง ๋ชปํ๋ค.
๐น ์ด์ ์ ํ์๋ ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ ๋ฌธ์ ์ ์ ์ฌํ๋ค.
๊ตฌํ ์ฝ๋
import sys from collections import deque dx = [-1, 1, 0, 0] dy = [0, 0, -1, 1] def bfs(q,h): while q: x,y = q.popleft() for k in range(4): nx = x + dx[k] ny = y + dy[k] if 0<=nx<n and 0<=ny<n and area[nx][ny]>h and visited[nx][ny]==0: visited[nx][ny] = 1 q.append([nx,ny]) n = int(sys.stdin.readline()) area = [list(map(int,sys.stdin.readline().split())) for _ in range(n)] M = max(max(area)) ans = 0 for h in range(0,M): cnt = 0 visited = [[0]*n for _ in range(n)] for i in range(n): for j in range(n): if area[i][j]>h and visited[i][j]==0: bfs(deque([[i,j]]),h) visited[i][j] = 1 cnt += 1 if cnt > ans: ans = cnt print(ans)
์คํ ๊ฒฐ๊ณผ
๐ก
728x90'__Python > __Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Python] ๋ฐฑ์ค - 1952 ๋ฌํฝ์ด 2 (0) 2022.03.24 [Python] ๋ฐฑ์ค - 1913 ๋ฌํฝ์ด(๊ธฐ์ด ๋ฐฐ์ด๋ค๋ฃจ๊ธฐ) (0) 2022.03.24 [Python] ๋ฐฑ์ค - 7569 ํ ๋งํ (0) 2022.02.12 [Python] ๋ฐฑ์ค - 1439 ๋ค์ง๊ธฐ (0) 2022.01.27 [Python] ๋ฐฑ์ค - 1629 ๊ณฑ์ (0) 2022.01.13