• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

setrecursionlimit 설정했는데, 프로그램이 중간에 종료됩니다.

21.04.20 22:29 작성 조회수 92

0

안녕하세요 강사님. 좋은 강의 감사합니다.

in4.txt 로 테스트할 때 , 비의 높이를 설정하는 for 문에서 1부터 시작하면 프로그램이 오류 없어 종료되어 버립니다. 그래서 cnt_debug  를 출력해보면 2600 정도에서 종료되어 버립니다. for문을 2 부터 시작하면 정상동작하고, 5개의 테스트도 성공합니다. 컴퓨터도 작년에 구매해서 파이썬 안돌아갈 정도는 아닙니다.

강사님 코드랑 비교해봤는데, 특별한 오류는 없는거 같습니다. python 버전은 3.7.9 입니다. 혹시 제가 실수한 부분이 있나요?

import sys
sys.stdin=open('in4.txt','rt')
# input=sys.stdin.readline
sys.setrecursionlimit(10**6)

def DFS(x,y,T):
  global cnt_debug

  cnt_debug+=1
  ch[x][y]=1

  for i in range(4):
    xx=x+dx[i]
    yy=y+dy[i]

    if 0<=xx<n and 0<=yy<n and a[xx][yy]>T:
      if ch[xx][yy]==0:
        print('>>>cnt:', cnt_debug, end=' ') ===> 디버깅 cnt 출력
        DFS(xx,yy,T)

if __name__=='__main__':
  dx=[-1,0,1,0]
  dy=[0,1,0,-1]
  n=int(input())
  a=[list(map(int, input().split())) for _ in range(n)]

  max1=0
  for xx in a:
    for x in xx:
      if x>max1:
        max1=x
  
  res=list()
  for t in range(1, 100): ===> 이부분을 "2" 부터 시작하면 잘되는데, 1부터 하면 중간에 프로그램이 중간에 오류없이 종료됩니다.
    if t > max1:
      break
    cnt=0
    ch=[[0]*n for _ in range(n)]
    for i in range(n):
      for j in range(n):
        if a[i][j]>t and ch[i][j]==0:
          cnt_debug=0
          DFS(i,j,t)
          cnt+=1
    res.append(cnt)
  print(max(res))

오류 화면은 아래와 같습니다. 2607에서 종료됩니다. 특별한 오류 메시지는 없습니다.

답변 1

답변을 작성해보세요.

0

안녕하세요^^

제 컴퓨터에서는 아무 문제 없이 잘 나옵니다.