문제
https://www.acmicpc.net/problem/16234
코드
from collections import deque
queue=deque()
n,left,right=map(int, input().split())
graph=[list(map(int, input().split())) for _ in range(n)]
dx=[-1,1,0,0]
dy=[0,0,-1,1]
def bfs(r,c):
global flag
visited[r][c]=True
sum_array.append(graph[r][c])
sum_index.append((r,c))
queue.append((r,c))
while queue:
x,y=queue.popleft()
for i in range(4):
nx=x+dx[i]
ny=y+dy[i]
if 0<=nx<n and 0<=ny<n:
if visited[nx][ny]==False and left<=abs(graph[nx][ny]-graph[x][y])<=right:
flag=True
visited[nx][ny]=True
sum_array.append(graph[nx][ny])
sum_index.append((nx, ny))
queue.append((nx,ny))
result=0
while True:
visited=[[False]*n for _ in range(n)]
sum_array=[]
sum_index=[]
flag=False
for i in range(n):
for j in range(n):
if visited[i][j]==False:
bfs(i,j)
ave=sum(sum_array)//len(sum_array)
for ii,jj in sum_index:
graph[ii][jj]=ave
sum_array = []
sum_index = []
if flag==False:
break
result+=1
print(result)
'문제풀이 > 구현' 카테고리의 다른 글
[파이썬] [구현] 백준 2531 회전 초밥 (0) | 2023.03.03 |
---|---|
[파이썬] [구현] 백준 2932 표 회전 (0) | 2023.01.28 |
[파이썬] [구현] 백준 20055 컨베이어 벨트 위의 로봇 (0) | 2023.01.18 |
[PyPy] [구현] 백준 16235 나무 재테크 (0) | 2022.05.28 |
[파이썬] [구현] 백준 15686 치킨 배달 (0) | 2022.05.18 |