[๋ฐฑ์ค€]2667-๋‹จ์ง€

ยท

2 min read

๐Ÿ’ก๋ฌธ์ œ ๋ถ„์„ ์š”์•ฝ

-- ๋ฌธ์ œ --

์ž…๋ ฅ : N(์ง€๋„ ํฌ๊ธฐ)

  • 1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ

  • ์—ฐ๊ฒฐ๋œ ์ง‘์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜, ๋‹จ์ง€์— ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ

  • ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ= ์ขŒ์šฐ, ์œ„์•„๋ž˜๋กœ ๋‹ค๋ฅธ ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ

  • ๋‹จ์ง€ ์ˆ˜ ์ถœ๋ ฅ, ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ

๐Ÿ’ก์•Œ๊ณ ๋ฆฌ์ฆ˜ ์„ค๊ณ„

  1. input์„ ํ†ตํ•ด N ์ž…๋ ฅ

  2. BFS

  3. dfs, bfs ํ•จ์ˆ˜ ์ด์šฉ

๐Ÿ’ก์ฝ”๋“œ

from collections import deque

def bfs(graph, i, j):
    N = len(graph)
    need_visited = deque([])
    need_visited.append((i, j))

๐Ÿ’ก์‹œ๊ฐ„๋ณต์žก๋„

O(N)

๐Ÿ’กํ‹€๋ฆฐ ์ด์œ 

  1. ๋‹ค์Œ๋‚  ๋Œ€ํšŒ๋กœ ์ค€๋น„ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋ชจ์ž๋ผ ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•  ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•จ. ๋Œ€ํšŒ๋๋‚˜๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ณผ ์˜ˆ์ •.

๐Ÿ’กํ‹€๋ฆฐ ๋ถ€๋ถ„ ์ˆ˜์ • or ๋‹ค๋ฅธ ํ’€์ด

from collections import deque

def bfs(graph, i, j):
    N = len(graph)
    need_visited = deque([])
    need_visited.append((i, j))

    graph[i][j] = '0'
    num_apt = 1

    # ์ƒํ•˜์ขŒ์šฐ ํƒ์ƒ‰
    dx = [-1, 1, 0, 0]
    dy = [0, 0, -1, 1]

    while need_visited:
        x, y = need_visited.popleft()

        for i in range(4):
            nx = x + dx[i]
            ny = y + dy[i]

            if nx < 0 or nx >= N or ny < 0 or ny >= N:
                continue

            if graph[nx][ny] == '1':
                need_visited.append((nx, ny))
                graph[nx][ny] = '0'
                num_apt += 1

    return num_apt


N = int(input())
graph = []
for i in range(N):
    nodes = list(input())
    graph.append(nodes)

cnt = []
for i in range(N):
    for j in range(N):
        if graph[i][j] == '1':
            cnt.append(bfs(graph, i, j))

cnt.sort()
print(len(cnt))
for c in cnt:
    print(c)

๐Ÿ’ก๋Š๋‚€์  or ๊ธฐ์–ต ํ•  ์ •๋ณด

  1. ์ฒ˜์Œ ์ฝ”ํ…Œ๋ฅผ ์ ‘ํ•˜๋‹ค๋ณด๋‹ˆ ์ ‘๊ทผํ•˜๋Š”๋ฐ ์–ด๋ ค์›€์„ ๋Š๋‚Œ. -> ๋ฌธ์ œ ๋งŽ์ด ์ ‘ํ•ด๋ณด๊ธฐ.

  2. ๊ฐœ๋…๋งŒ ๊ณต๋ถ€ํ•˜์ง€ ๋ง๊ณ  ๊ธฐ๋ณธ ๊ตฌํ˜„ํ•œ ์ฝ”๋“œ ๋งŽ์ด ์ ‘ํ•ด๋ณด๊ธฐ.

  3. ๋‹ค์Œ๋‚  ๋Œ€ํšŒ๋กœ ์ค€๋น„ํ•˜๋Š”๋ฐ ์‹œ๊ฐ„์ด ๋ชจ์ž๋ผ ์ถฉ๋ถ„ํžˆ ์ƒ๊ฐํ•  ์‹œ๊ฐ„์ด ๋ถ€์กฑํ•จ. ๋Œ€ํšŒ๋๋‚˜๊ณ  ๋‹ค์‹œ ํ’€์–ด๋ณผ ์˜ˆ์ •. ๋‹จ์ง€ ํ’€์ด์ดํ•ด๋กœ ๋๋‚จ.

ย