과거에 풀었던 문제. ( 링크 )
6개월만에 푸니 확실히 속도나 이해도가 좋긴 하다.
제출 1. 통과
import sys
input = sys.stdin.readline
from collections import deque
dx = [-1, 1, 0, 0]
dy = [0, 0, -1, 1]
def getArea(a, b, board):
area = 1
q = deque([(a, b)])
board[a][b] = 2
n = len(board)
m = len(board[0])
while q:
x, y = deque.popleft(q)
for i in range(4):
nx = x + dx[i]
ny = y + dy[i]
if 0 <= nx < n and 0 <= ny < m and board[nx][ny] == 1:
q.append((nx, ny))
board[nx][ny] = 2
area += 1
return area
def main():
n, m = map(int, input().split())
board = [list(map(int, input().split())) for _ in range(n)]
visited = [[False] * m for _ in range(n)]
maxArea = 0
drawingNum = 0
for i in range(n):
for j in range(m):
if board[i][j] == 1:
drawingNum += 1
nowArea = getArea(i, j, board)
maxArea = max(maxArea, nowArea)
print(drawingNum)
print(maxArea)
if __name__ == '__main__':
main()
속도도 절반으로 줄었다. ❣
BFS 중에서도 Flood Fill 스타일
'CodingTest > Baekjun Online Judge' 카테고리의 다른 글
[ BOJ / 파이썬 ] 7576 토마토 (0) | 2023.01.27 |
---|---|
[ BOJ / 파이썬 ] 2178.미로 탐색 (0) | 2023.01.27 |
[ BOJ / 파이썬 ] 4949.균형잡힌 세상 (0) | 2023.01.27 |
[ BOJ / 파이썬 ] 10828 스택 (0) | 2023.01.27 |
[ 백준 ] 1406 에디터 (0) | 2023.01.22 |