๊ทธ๋ฆผ

๐Ÿ“„ ๋ฌธ์ œ

๋ฌธ์ œ

์–ด๋–ค ํฐ ๋„ํ™”์ง€์— ๊ทธ๋ฆผ์ด ๊ทธ๋ ค์ ธ ์žˆ์„ ๋•Œ, ๊ทธ ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜์™€, ๊ทธ ๊ทธ๋ฆผ ์ค‘ ๋„“์ด๊ฐ€ ๊ฐ€์žฅ ๋„“์€ ๊ฒƒ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ. ๋‹จ, ๊ทธ๋ฆผ์ด๋ผ๋Š” ๊ฒƒ์€ 1๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์„ ํ•œ ๊ทธ๋ฆผ์ด๋ผ๊ณ  ์ •์˜ํ•˜์ž.
๊ฐ€๋กœ๋‚˜ ์„ธ๋กœ๋กœ ์—ฐ๊ฒฐ๋œ ๊ฒƒ์€ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์ด๊ณ  ๋Œ€๊ฐ์„ ์œผ๋กœ ์—ฐ๊ฒฐ์ด ๋œ ๊ฒƒ์€ ๋–จ์–ด์ง„ ๊ทธ๋ฆผ์ด๋‹ค.
๊ทธ๋ฆผ์˜ ๋„“์ด๋ž€ ๊ทธ๋ฆผ์— ํฌํ•จ๋œ 1์˜ ๊ฐœ์ˆ˜์ด๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ๋„ํ™”์ง€์˜ ์„ธ๋กœ ํฌ๊ธฐ n(1 ≤ n ≤ 500)๊ณผ ๊ฐ€๋กœ ํฌ๊ธฐ m(1 ≤ m ≤ 500)์ด ์ฐจ๋ก€๋กœ ์ฃผ์–ด์ง„๋‹ค.
๋‘ ๋ฒˆ์งธ ์ค„๋ถ€ํ„ฐ n+1 ์ค„ ๊นŒ์ง€ ๊ทธ๋ฆผ์˜ ์ •๋ณด๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.
(๋‹จ ๊ทธ๋ฆผ์˜ ์ •๋ณด๋Š” 0๊ณผ 1์ด ๊ณต๋ฐฑ์„ ๋‘๊ณ  ์ฃผ์–ด์ง€๋ฉฐ, 0์€ ์ƒ‰์น ์ด ์•ˆ๋œ ๋ถ€๋ถ„, 1์€ ์ƒ‰์น ์ด ๋œ ๋ถ€๋ถ„์„ ์˜๋ฏธํ•œ๋‹ค)

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ๊ทธ๋ฆผ์˜ ๊ฐœ์ˆ˜, ๋‘˜์งธ ์ค„์—๋Š” ๊ทธ ์ค‘ ๊ฐ€์žฅ ๋„“์€ ๊ทธ๋ฆผ์˜ ๋„“์ด๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.
๋‹จ, ๊ทธ๋ฆผ์ด ํ•˜๋‚˜๋„ ์—†๋Š” ๊ฒฝ์šฐ์—๋Š” ๊ฐ€์žฅ ๋„“์€ ๊ทธ๋ฆผ์˜ ๋„“์ด๋Š” 0์ด๋‹ค.

๐Ÿงž ํ’€์ด

๋”๋ณด๊ธฐ

ํ’€์ด

# [ํŒŒ์ด์ฌ] ๋ฐฑ์ค€ 1926๋ฒˆ ๋ฌธ์ œ: ๊ทธ๋ฆผ

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

n, m = map(int, input().split())                                                                            # n, m ์ž…๋ ฅ ๋ฐ ํ• ๋‹น
draw = [list(map(int, input().split())) for _ in range(n)]                                                  # draw 2์ฐจ์› ๋ฐฐ์—ด ์ž…๋ ฅ ๋ฐ ํ• ๋‹น

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

check = [[0] * m for _ in range(n)]                                                                         # ๋ฐฉ๋ฌธ ์—ฌ๋ถ€ ํ™•์ธํ•  ๋ฐฐ์—ด ๋นˆ ๋ฐฐ์—ด ํ• ๋‹น
a_list = []                                                                                                 # ๊ทธ๋ฆผ ๋„“์ด ๋‹ด์„ ๋นˆ a_list ํ• ๋‹น

q = deque()                                                                                                 # ๋นˆ queue ํ• ๋‹น

for i in range(n):                                                                                          # n๋งŒํผ ๋ฐ˜๋ณต
    for j in range(m):                                                                                      # m๋งŒํผ ๋ฐ˜๋ณต
        if draw[i][j] == 1 and check[i][j] != -1:                                                           # ๊ทธ๋ฆผ์ด๋ฉด์„œ (1), ๋ฐฉ๋ฌธํ•˜์ง€ ์•Š์€ ๊ฒฝ์šฐ (-1)
            check[i][j] = -1                                                                                # ๋ฐฉ๋ฌธํ•œ ๊ฒƒ์œผ๋กœ ํ‘œ์‹œ
            q.append((j, i))                                                                                # q์— ํ•ด๋‹น ์ขŒํ‘œ ๋„ฃ๊ธฐ
            cnt = 1                                                                                         # ๊ทธ๋ฆผ ๋„“์ด ์ดˆ๊ธฐ๊ฐ’ 1

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

            else:                                                                                           # ๋ฐ˜๋ณต๋ฌธ์ด ๋๋‚  ๊ฒฝ์šฐ, (์ฃผ๋ณ€์— ๋” ์ด์ƒ ๊ทธ๋ฆผ์ด ์ด์–ด์ง€์ง€ ์•Š์„ ๊ฒฝ์šฐ)
                a_list.append(cnt)                                                                          # ๊ทธ๋ฆผ ๋„“์ด cnt๋ฅผ a_list์— ์ถ”๊ฐ€

if len(a_list) != 0:
    print(len(a_list))                                                                                      # ๊ทธ๋ฆผ์˜ ๊ฐฏ์ˆ˜ ์ถœ๋ ฅ
    print(max(a_list))                                                                                      # ๊ทธ๋ฆผ ์ค‘ ์ตœ๋Œ€ ๋„“์ด ์ถœ๋ ฅ
else:
    print(0)
    print(0)

+ Recent posts