Coding
[Softeer] ์ฅ์ ๋ฌผ ์ธ์ ํ๋ก๊ทธ๋จ
๋จ๋ฐ์ค
2023. 5. 23. 10:55
https://softeer.ai/practice/info.do?idx=1&eid=409
Softeer
์ฐ์ต๋ฌธ์ ๋ฅผ ๋ด์ Set์ ์ ํํด์ฃผ์ธ์. ์ทจ์ ํ์ธ
softeer.ai
๋ฌธ์ ํด๊ฒฐ
๋ฐฑ์ค์์ ๋ง์ด ํ์๋ ๋ฌธ์ ๋ผ ์ฝ๋๋ ๋นจ๋ฆฌ ์งฐ๋๋ฐ board ์ ๋ ฅ์ str์ผ๋ก ๋ฐ์๋๊ณ ๊ณ์ ๋น๊ต๋ฅผ 0์ผ๋ก ํ๋๊น ๋ต์ด ์๋์ค์ง..
๊ฐ๋จํ bfs ๋ฌธ์ ์ฌ์ visited๋ก ํ์ธํ ์๋ฆฌ์ธ์ง ์ฒดํฌ๋ง ํด์ฃผ๋ฉด์ 1์ผ ๋ ์นด์ดํธํด์ฃผ๊ณ ๊ทธ ๊ฐ๋ง ๋ง์ง๋ง์ ๋๊ฒจ์ฃผ๋ฉด ๋๋ ๋ฌธ์ !
์ฝ๋
import sys
input = sys.stdin.readline
from collections import deque
N = int(input())
board = []
for i in range(N):
board.append(list(input().strip()))
visited = [[0]*N for _ in range(N)]
dx = [1, 0, -1, 0]
dy = [0, 1, 0, -1]
result = []
def solution(x , y):
q = deque()
q.append([x,y])
visited[x][y] = True
cnt = 1
while q:
x,y = q.popleft()
for d in range(4):
next_x = x + dx[d]
next_y = y + dy[d]
if (0 <= next_x < N and 0 <= next_y < N) and (visited[next_x][next_y] == False) and board[next_x][next_y] == '1':
q.append([next_x, next_y])
visited[next_x][next_y] = True
cnt += 1
return cnt
for i in range(N):
for j in range(N):
if (board[i][j] == '1') and visited[i][j] == False:
result.append(solution(i,j))
result.sort()
print(len(result))
for r in result:
print(r)