CodingTest/Baekjun Online Judge
[ BOJ / 파이썬 ] 1926. 그림
EEOOOO
2023. 1. 27. 13:38
과거에 풀었던 문제. ( 링크 )
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 스타일