728x90
๋ฐ์ํ
โ๋ฌธ์
Softeer - ํ๋์๋์ฐจ๊ทธ๋ฃน SW์ธ์ฌํ๋ณดํ๋ซํผ
์ธ์ด๋ณ ์๊ฐ/๋ฉ๋ชจ๋ฆฌ
์ธ์ด | ์๊ฐ | ๋ฉ๋ชจ๋ฆฌ |
JavaScript | 2์ด | 128MB |
C | 1์ด | 128MB |
C++ | 1์ด | 128MB |
Java | 2์ด | 128MB |
Python | 2์ด | 128MB |
โ๐ปํ์ด
์ฅ์ ๋ฌผ ์ค ๋ฐฉ๋ฌธํ์ง ์์ ๊ณณ์ ์ฐพ์ ๋ธ๋ก์ ์๋ฅผ ๊ณ์ฐํ๋ค.
ํ์ฌ ์์น์์ ๋ ์ด์์ ๋ธ๋ก์ด ์๋ค๋ฉด ๋์ด๋ฅผ ๊ธฐ๋กํ๋ค.
์์ ๊ฐ์ ๋ฐฉ๋ฒ์ ์ธ์๋์ง ์์ ๋ธ๋ก์ด ์์ ๋๊น์ง ๋ฐ๋ณตํ๋ค.
๊ทธ๋ฆฌ๊ณ ์ฅ์ ๋ฌผ ๋ธ๋ก์ ์์ ๋ธ๋ก์ ์ํ๋ ์ฅ์ ๋ฌผ์ ์๋ฅผ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌํ์ฌ ์ถ๋ ฅํ๋ค.
๐ป์ฝ๋
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
board = [list(input().rstrip('\\n')) for _ in range(n)]
visit = [[False for _ in range(n)] for _ in range(n)]
dir = [[1, 0], [-1, 0], [0, 1], [0, -1]]
blocks = []
def bfs(y, x):
q = deque()
q.append((y, x))
visit[y][x] = True
block = 1
while q:
cury, curx = q.popleft()
for d in dir:
ny, nx = cury + d[0], curx + d[1]
if 0 <= ny < n and 0 <= nx < n and not visit[ny][nx] and board[ny][nx] == '1':
visit[ny][nx] = True
q.append((ny, nx))
block += 1
blocks.append(block)
for i in range(n):
for j in range(n):
if not visit[i][j] and board[i][j] == '1':
bfs(i, j)
blocks.sort()
print(len(blocks))
print(*blocks, sep='\\n')
728x90
๋ฐ์ํ
'Coding Test > Algorithms' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค] 13305.์ฃผ์ ์/Python - Silver3 (0) | 2024.11.01 |
---|---|
[์ํํฐ์ด] ์ง๊ฒ๋ค๋ฆฌ/Python - Lv.3 (0) | 2024.10.30 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์์ ์ฐพ๊ธฐ/Python - Lv.2 (0) | 2024.10.25 |
[ํ๋ก๊ทธ๋๋จธ์ค] [3์ฐจ] ์์ถ/Python - Lv.2 (1) | 2024.10.24 |
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ฐฐ์์/Java - Lv.2 (0) | 2024.10.24 |