본문 바로가기

알고리즘 문제풀이

영상처리[백준 21938]

https://www.acmicpc.net/problem/21938

from collections import deque 
import sys
n, m = map(int, input().split())
data = []
dx = [1,-1,0,0] 
dy = [0,0,1,-1]
for _ in range(n):
    row = list(map(int, input().split()))
    data.append(row)
T = int(input())
visit = [[0]*(m) for _ in range(n)]
cnt = 0 
new_arr = [[0 for _ in range(m)] for _ in range(n)]
for i in range(n):
    for j in range(m):
        r, g, b = data[i][3 * j], data[i][3 * j + 1], data[i][3 * j + 2]
        avg = (r + g + b) // 3
        if avg >= T:
            new_arr[i][j] = 255
        else:
            new_arr[i][j] = 0

def bfs(i,j ) :
    q  = deque() 
    q.append((i,j)) 
    while q: 
        x,y =q.popleft()
        for i in range(4) :
            nx, ny= dx[i]+x, dy[i]+y  
            if 0<= nx<n  and  0<=ny<m : 
                if  new_arr[nx][ny]>= T and visit[nx][ny]== 0  :
                    q.append((nx,ny)) 
                    visit[nx][ny] = 1 
for i in range(n) :
    for j in range(m) :
        if new_arr[i][j] >= T and visit[i][j] == 0 :
            bfs(i,j ) 
            cnt += 1 
print(cnt)