๋‹จ์ง€ ๋ฒˆํ˜ธ ๋ถ™์ด๊ธฐ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

<๊ทธ๋ฆผ 1>๊ณผ ๊ฐ™์ด ์ •์‚ฌ๊ฐํ˜• ๋ชจ์–‘์˜ ์ง€๋„๊ฐ€ ์žˆ๋‹ค.
1์€ ์ง‘์ด ์žˆ๋Š” ๊ณณ์„, 0์€ ์ง‘์ด ์—†๋Š” ๊ณณ์„ ๋‚˜ํƒ€๋‚ธ๋‹ค.
์ฒ ์ˆ˜๋Š” ์ด ์ง€๋„๋ฅผ ๊ฐ€์ง€๊ณ  ์—ฐ๊ฒฐ๋œ ์ง‘์˜ ๋ชจ์ž„์ธ ๋‹จ์ง€๋ฅผ ์ •์˜ํ•˜๊ณ ,๋‹จ์ง€์— ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ด๋ ค ํ•œ๋‹ค.
์—ฌ๊ธฐ์„œ ์—ฐ๊ฒฐ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์€ ์–ด๋–ค ์ง‘์ด ์ขŒ์šฐ, ํ˜น์€ ์•„๋ž˜์œ„๋กœ ๋‹ค๋ฅธ ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ๋งํ•œ๋‹ค.
๋Œ€๊ฐ์„ ์ƒ์— ์ง‘์ด ์žˆ๋Š” ๊ฒฝ์šฐ๋Š” ์—ฐ๊ฒฐ๋œ ๊ฒƒ์ด ์•„๋‹ˆ๋‹ค. <๊ทธ๋ฆผ 2>๋Š” <๊ทธ๋ฆผ 1>์„ ๋‹จ์ง€๋ณ„๋กœ ๋ฒˆํ˜ธ๋ฅผ ๋ถ™์ธ ๊ฒƒ์ด๋‹ค.
์ง€๋„๋ฅผ ์ž…๋ ฅํ•˜์—ฌ ๋‹จ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜๊ณ ,
๊ฐ ๋‹จ์ง€์— ์†ํ•˜๋Š” ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์ž…๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ง€๋„์˜ ํฌ๊ธฐ N(์ •์‚ฌ๊ฐํ˜•์ด๋ฏ€๋กœ ๊ฐ€๋กœ์™€ ์„ธ๋กœ์˜ ํฌ๊ธฐ๋Š” ๊ฐ™์œผ๋ฉฐ 5≤N≤25)์ด ์ž…๋ ฅ๋˜๊ณ ,
๊ทธ ๋‹ค์Œ N์ค„์—๋Š” ๊ฐ๊ฐ N๊ฐœ์˜ ์ž๋ฃŒ(0ํ˜น์€ 1)๊ฐ€ ์ž…๋ ฅ๋œ๋‹ค.

์ถœ๋ ฅ

์ฒซ ๋ฒˆ์งธ ์ค„์—๋Š” ์ด ๋‹จ์ง€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•˜์‹œ์˜ค.
๊ทธ๋ฆฌ๊ณ  ๊ฐ ๋‹จ์ง€๋‚ด ์ง‘์˜ ์ˆ˜๋ฅผ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌํ•˜์—ฌ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ถœ๋ ฅํ•˜์‹œ์˜ค.



๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 2667๋ฒˆ ๋ฌธ์ œ: ๋‹จ์ง€๋ฒˆํ˜ธ๋ถ™์ด๊ธฐ

from collections import deque                                                                           # deque ๋ถˆ๋Ÿฌ์˜ค๊ธฐ

n = int(input())                                                                                        # n ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
apt = [list(map(int, input())) for _ in range(n)]                                                       # apt ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

dx = [1, -1, 0, 0]                                                                                      # ์ขŒ, ์šฐ ์ด๋™ dx ํ• ๋‹น
dy = [0, 0, 1, -1]                                                                                      # ์ƒ, ํ•˜ ์ด๋™ dy ํ• ๋‹น

Q = deque()                                                                                             # BFS๋ฅผ ์œ„ํ•œ ๋นˆ Q ํ• ๋‹น
check = [[0] * n for _ in range(n)]                                                                     # ๋ฐฉ๋ฌธ ํ™•์ธ์„ ์œ„ํ•œ check n * n ํฌ๊ธฐ์˜ ๋ฐฐ์—ด๋กœ ํ• ๋‹น

a_list = []                                                                                             # ์ •๋‹ต์„ ๋‹ด์„ ๋นˆ a_list ํ• ๋‹น

for i in range(n):                                                                                      # n๋งŒํผ ์ด์ค‘๋ฐ˜๋ณต
    for j in range(n):
        if apt[i][j] == 1 and check[i][j] != -1:                                                        # ์ง‘(1)์ด๋ฉด์„œ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜์„ ๋•Œ(not -1)
            check[i][j] = -1                                                                            # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ (-1)
            cnt = 1                                                                                     # ๋‹จ์ง€์˜ ์•„ํŒŒํŠธ ๊ฐฏ์ˆ˜ 1๋กœ ํ• ๋‹น
            Q.append((i, j))                                                                            # Q์— x ์ขŒํ‘œ i์™€ y ์ขŒํ‘œ j ์ถ”๊ฐ€

            while Q:                                                                                    # Q์— ์š”์†Œ๊ฐ€ ๋“ค์–ด ์žˆ๋‹ค๋ฉด
                x, y = Q.popleft()                                                                      # Q์—์„œ popleftํ•˜์—ฌ x, y์— ๊ฐ’ ํ• ๋‹น
                for l in range(4):                                                                      # ์ƒํ•˜์ขŒ์šฐ๋กœ ๋ฐ˜๋ณต
                    nx = dx[l] + x
                    ny = dy[l] + y
                    if 0 <= nx < n and 0 <= ny < n and check[nx][ny] != -1 and apt[nx][ny] != 0:        # nx์™€ ny๊ฐ€ ์•„ํŒŒํŠธ ๋ฐฐ์—ด ๋ฒ”์œ„ ๋‚ด์— ์žˆ์œผ๋ฉฐ, ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์•˜๊ณ  (not -1), ์ง‘์ด ์•„๋‹ˆ์ง€ ์•Š์„ ๋•Œ (not 0):
                        check[nx][ny] = -1                                                              # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ (-1)
                        cnt += 1                                                                        # ์ง‘ ๊ฐฏ์ˆ˜ 1 ์ถ”๊ฐ€
                        Q.append((nx, ny))                                                              # Q์— nx, ny ์ถ”๊ฐ€

            else:                                                                                       # Q์— ์š”์†Œ๊ฐ€ ์—†๋‹ค๋ฉด
                a_list.append(cnt)                                                                      # ์•„ํŒŒํŠธ ๋‹จ์ง€ ๋‹น ์ง‘ ์ตœ์ข… ๊ฐฏ์ˆ˜๋ฅผ a_list์— ์ถ”๊ฐ€

print(len(a_list))                                                                                      # a_list์˜ ๊ธธ์ด ์ถœ๋ ฅ
a_list.sort()                                                                                           # a_list ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
for a in a_list:                                                                                        # a_list์˜ ์š”์†Œ ํ•˜๋‚˜์”ฉ ๊บผ๋‚ด์„œ
    print(a)                                                                                            # ์ถœ๋ ฅ

+ Recent posts