jj1218   4년 전

안녕하세요.

파이썬언어로 재귀함수를 이용하여 DFS방식으로 풀었습니다.

질문에 있는 예외 답안들도 넣어서 해봤는데 정상적으로 잘 나오는거 같은대 런타임에러 오류가 납니다..ㅠㅠ

하아~ 고수님들 제발 한번만 확인 부탁드립니다.

감사합니다.

shg9411   4년 전

sys.setrecursionlimit(10**6)를 해주시면 되는데 이 코드로 시간초과가 나오네요

jj1218   4년 전

shg9411

시간초과는 왜 나올까요...ㅠㅠ어떠한 반례가 있는걸까요?

다른 질문들 반례 다 집어넣어서 해봤는대.

shinever   4년 전

m ~= n^2/2이기 때문에 스크립트 언어인 파이썬으로 for문 돌릴 시에 시간 초과가 납니다.

윗댓분께서 말씀하신대로 시간 제한을 두기 위해 sys 모듈 import 하실 경우 input() 대신 sys.stdin.readline() 사용하시면 됩니다.

즉, 하단 코드와 같이 고쳐주시면 될 것 같습니다 (_ _)~

for index in range(m):
    left, right = map(int, sys.stdin.readline().split())
    node[left].append(right)
    node[right].append(left)

jj1218   4년 전

shg9411 shinever

정말 두분한테 너무너무 감사드립니다.

제가 아직 부족해서 그런데 input()과 sys.stdin.readline()이랑 처리 속도 차이가 많이 나나요?

혹시나 해서 테스트를 해보니 상당한 차이가 있네요.

그럼 당연히 sys를 쓰지 input은 언제 사용해야 적절한걸까요?ㅠㅠ

shg9411   4년 전

한 줄 읽는 데에는 input도 sys.stdin만큼 좋지만

여러 줄을 읽는 데에는 input이 현저히 느리다고 합니다.

저도 구글링을 통해 stackoverflow에서 봤던 것이라서 참고만 하시기 바랍니다.

저는 한두줄 읽을 때에는 input()을 그냥 쓰고 입력이 일정한 양 이상이라면 sys.stdin을 사용합니다.

jj1218   4년 전

shg9411

감사합니당!!더 공부해봐야겠네요.

댓글을 작성하려면 로그인해야 합니다.