https://www.acmicpc.net/problem/2667
2667๋ฒ: ๋จ์ง๋ฒํธ๋ถ์ด๊ธฐ
<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ์ด ์ ์ฌ๊ฐํ ๋ชจ์์ ์ง๋๊ฐ ์๋ค. 1์ ์ง์ด ์๋ ๊ณณ์, 0์ ์ง์ด ์๋ ๊ณณ์ ๋ํ๋ธ๋ค. ์ฒ ์๋ ์ด ์ง๋๋ฅผ ๊ฐ์ง๊ณ ์ฐ๊ฒฐ๋ ์ง์ ๋ชจ์์ธ ๋จ์ง๋ฅผ ์ ์ํ๊ณ , ๋จ์ง์ ๋ฒํธ๋ฅผ ๋ถ์ด๋ ค ํ๋ค. ์ฌ
www.acmicpc.net
๋ฆฌ์คํธ ๋๋ฉด์ ํด๋น ๋ฐ์ดํฐ๊ฐ 1์ด๋ฉด ์ํ์ข์ฐ ์ดํผ๋ฉด์ ๊ทธ๋ํ๋ฅผ ํ์ํ๋ค.
์ฝ๋๊ฐ ๋งค์ฐ ๋์ ๋ถํ ๋๋,,,
# dfs
n = int(input())
list = [[] for _ in range(n)]
for i in range(n):
data = input()
for j in range(n):
list[i].append(int(data[j]))
def dfs(x, y):
if x < 0 or x >= n or y < 0 or y >= n:
return False
if list[x][y] == 1:
global count
count += 1
list[x][y] = 0
dfs(x+1, y)
dfs(x-1, y)
dfs(x, y+1)
dfs(x, y-1)
return True
else:
return False
cList = []
result = 0
for i in range(n):
for j in range(n):
count = 0
if dfs(i, j):
cList.append(count)
result += 1
cList.sort()
print(result)
for i in range(len(cList)):
print(cList[i])
# bfs
from collections import deque
n = int(input())
list = [[] for _ in range(n)]
for i in range(n):
data = input()
for j in range(n):
list[i].append(int(data[j]))
dx = [1, -1, 0, 0]
dy = [0, 0, 1, -1]
def bfs(x, y):
global count
queue = deque()
if list[x][y] == 1:
queue.append([x, y])
list[x][y] = 0
while queue:
q1, q2 = queue.popleft()
count += 1
for i in range(4):
mx = q1 + dx[i]
my = q2 + dy[i]
if mx < 0 or mx >= n or my < 0 or my >= n:
continue
if list[mx][my] == 1:
queue.append([mx, my])
list[mx][my] = 0
return count
result = 0
cList = []
for i in range(n):
for j in range(n):
count = 0
if bfs(i, j) > 0:
result += 1
cList.append(count)
cList.sort()
print(result)
for i in range(len(cList)):
print(cList[i])
'๐ค > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 2178: ๋ฏธ๋ก ํ์ (Python) (0) | 2022.02.01 |
---|---|
๋ฐฑ์ค 1012: ์ ๊ธฐ๋ ๋ฐฐ์ถ (Python) (0) | 2022.01.31 |
๋ฐฑ์ค 2606: ๋ฐ์ด๋ฌ์ค (Python) (0) | 2022.01.29 |
๋ฐฑ์ค 1260: DFS์ BFS (Python) (0) | 2022.01.29 |
๋ฐฑ์ค 13305: ์ฃผ์ ์ (Python) (0) | 2022.01.21 |