• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

BFS방식으로 풀었는데 틀렸다는데 확인을 해도 잘 모르겠습니다. 확인 부탁드려요.

21.01.17 15:22 작성 조회수 58

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)

답변 2

·

답변을 작성해보세요.

1

안녕하세요^^

변수의 유효범위(스코프) 기준이 C 나 자바가 블록기준인데 반해 파이썬은 그 기준이 함수입니다. 

위 코드는 중첩반복문 안에서 동일 변수 i를 각기 다른 i변수로 생각하고 두 번 쓰고 있습니다. 4방향 탐색을 하는 for i in range(4)를 for k in range(4)처럼 다른 변수를 사용하세요.

0

mc -님의 프로필

mc -

질문자

2021.01.18

전혀 생각하지 못한부분을 놓치고있었습니다. 질좋은 강의 항상 잘 듣고있습니다!

감사합니다.