Inflearn Community Q&A
BFS방식으로 풀었는데 틀렸다는데 확인을 해도 잘 모르겠습니다. 확인 부탁드려요.
Written on
·
144
0
다음과 같이 코드 작성하였는데요 답과는 다르게 나옵니다.
어느 부분인지 찾지를 못하겠어서 도움 요청드립니다.
from collections import deque import sys sys.setrecursionlimit(10**6) dx=[-1,0,1,0] dy=[0,1,0,-1] n = int(input()) area = [list(map(int,input().split())) for _ in range(n)] Q = deque() res=0 for h in range(100): ch = [[0]*n for _ in range(n)] cnt = 0 for i in range(n): for j in range(n): if area[i][j]>h and ch[i][j]==0: ch[i][j]=1 cnt+=1 Q.append((i,j)) while Q: tmp = Q.popleft() for i in range(4): xx=tmp[0]+dx[i] yy=tmp[1]+dy[i] if 0<=xx<n and 0<=yy<n and ch[xx][yy]==0 and area[xx][yy]>h: ch[xx][yy]=1 Q.append((xx,yy)) res = max(res,cnt) if cnt == 0: break print(res)
python코테 준비 같이 해요!
Answer 2
1
codingcamp
Instructor
안녕하세요^^
변수의 유효범위(스코프) 기준이 C 나 자바가 블록기준인데 반해 파이썬은 그 기준이 함수입니다.
위 코드는 중첩반복문 안에서 동일 변수 i를 각기 다른 i변수로 생각하고 두 번 쓰고 있습니다. 4방향 탐색을 하는 for i in range(4)를 for k in range(4)처럼 다른 변수를 사용하세요.
0





