๐ค๋ฌธ์ ํด๊ฒฐ
S1 | BFS, ๊ทธ๋ํ
๊ทธ๋ฆผ์ ํ๋ ์ ํ ํ๋ค.
๊ทธ ๊ทธ๋ฆผ์ ์ํ์ข์ฐ๋ฅผ ํ์ํ๋ค.
๋ง์ฝ ์ํ์ข์ฐ์ ๊ทธ๋ฆผ์ด ์๋ค๋ฉด ๊ทธ ๊ทธ๋ฆผ์ ์ ํ ํ ๋ค์ ์ํ์ข์ฐ ์ ํํ๋ค.
๋ ์ด์ ์ฒ์ ์ ํํ ๊ทธ๋ฆผ๊ณผ ์ฐ๊ฒฐ๋ ๊ทธ๋ฆผ์ด ์์ ๋ ๊น์ง ํ์.
์์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค. ์ฒ์ ๊ทธ๋ฆผ์ ์ ํํ๋ฉด ๊ทธ๋ฆผ์ ๊ฐฏ์ +1
๊ทธ๋ฆผ์ ํํ ์ํ์ข์ฐ ํ์ํ๋ฉด์ ๊ทธ๋ฆผ์ ์ฐพ์ผ๋ฉด ๊ทธ๋ฆผ์ ํฌ๊ธฐ +1
๐จ ๊ธฐ๋ณธ์ ์ธ BFS ๋ฌธ์
๐ป์์ค ์ฝ๋
from collections import deque
def bfs(x, y):
q = deque()
q.append((x, y))
images[i][j] = 0
size = 1 # ์ต์ด ๋ค์ด๊ฐ ๋ ๊ทธ๋ฆผ ํฌ๊ธฐ 1๋ก ์์
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 < m: # ์ธ๋ฑ์ค ๋ฒ์์์ ์๊ณ
if images[nx][ny]: # ์ฃผ๋ณ์ด ์ฐ๊ฒฐ๋ ๊ทธ๋ฆผ์ด๋ฉด
q.append((nx, ny))
size += 1
images[nx][ny] = 0
else:
size_list.append(size)
return
if __name__ == "__main__":
n, m = map(int, input().split())
images = [list(map(int, input().split())) for _ in range(n)]
cnt = 0 # ๊ทธ๋ฆผ์ ์
size_list = [] # ๊ทธ๋ฆผ์ ํฌ๊ธฐ๋ค
dx, dy = [-1, 1, 0, 0], [0, 0, -1, 1]
for i in range(n):
for j in range(m):
if images[i][j]: # ํ๋ฒ ๋ค์ด๊ฐ ๋๋ง๋ค ๊ทธ๋ฆผ +1
bfs(i, j)
cnt += 1
print(cnt)
print(max(size_list) if size_list else 0)
๐๋ฌธ์ ํ์ธ
์ถ์ฒ: BACKJOON ONLINE JUDGE
๋งํฌ: https://www.acmicpc.net/problem/1926
๋ฌธ์
์ด๋ค ํฐ ๋ํ์ง์ ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์์ ๋, ๊ทธ ๊ทธ๋ฆผ์ ๊ฐ์์, ๊ทธ ๊ทธ๋ฆผ ์ค ๋์ด๊ฐ ๊ฐ์ฅ ๋์ ๊ฒ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๋จ, ๊ทธ๋ฆผ์ด๋ผ๋ ๊ฒ์ 1๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ํ ๊ทธ๋ฆผ์ด๋ผ๊ณ ์ ์ํ์. ๊ฐ๋ก๋ ์ธ๋ก๋ก ์ฐ๊ฒฐ๋ ๊ฒ์ ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ด๊ณ ๋๊ฐ์ ์ผ๋ก ์ฐ๊ฒฐ์ด ๋ ๊ฒ์ ๋จ์ด์ง ๊ทธ๋ฆผ์ด๋ค. ๊ทธ๋ฆผ์ ๋์ด๋ ๊ทธ๋ฆผ์ ํฌํจ๋ 1์ ๊ฐ์์ด๋ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ๋ํ์ง์ ์ธ๋ก ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ๋ก ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก๋ก ์ฃผ์ด์ง๋ค. ๋ ๋ฒ์งธ ์ค๋ถํฐ n+1 ์ค ๊น์ง ๊ทธ๋ฆผ์ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. (๋จ ๊ทธ๋ฆผ์ ์ ๋ณด๋ 0๊ณผ 1์ด ๊ณต๋ฐฑ์ ๋๊ณ ์ฃผ์ด์ง๋ฉฐ, 0์ ์์น ์ด ์๋ ๋ถ๋ถ, 1์ ์์น ์ด ๋ ๋ถ๋ถ์ ์๋ฏธํ๋ค)
์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ๊ทธ๋ฆผ์ ๊ฐ์, ๋์งธ ์ค์๋ ๊ทธ ์ค ๊ฐ์ฅ ๋์ ๊ทธ๋ฆผ์ ๋์ด๋ฅผ ์ถ๋ ฅํ์ฌ๋ผ. ๋จ, ๊ทธ๋ฆผ์ด ํ๋๋ ์๋ ๊ฒฝ์ฐ์๋ ๊ฐ์ฅ ๋์ ๊ทธ๋ฆผ์ ๋์ด๋ 0์ด๋ค.
'Algorithm Problem > Python' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[python] ํ๋ก๊ทธ๋๋จธ์ค - ๋์คํฌ ์ปจํธ๋กค๋ฌ (0) | 2020.09.10 |
---|---|
[python] ๋ฐฑ์ค - 2343. ๊ธฐํ ๋ ์จ (5) | 2020.09.09 |
[python] ๋ฐฑ์ค - 1743. ์์๋ฌผ ํผํ๊ธฐ (0) | 2020.09.07 |
[python] ํ๋ก๊ทธ๋๋จธ์ค - ์ธ๋ฒฝ ์ ๊ฒ(2020 KAKAO BLIND RECRUITMENT) (0) | 2020.09.06 |
[python] ๋ฐฑ์ค - 11052. ์นด๋ ๊ตฌ๋งคํ๊ธฐ / 16194. ์นด๋ ๊ตฌ๋งคํ๊ธฐ 2 (0) | 2020.09.05 |