mycool0905   5년 전

DFS 백트래킹으로 풀려고하는데..

setrecursionlimit(10000000)으로 하고 재귀함수로 했는데, 시간초과가 뜨네요.

알려주실 분 있으신가요?

hello70825   5년 전

https://www.acmicpc.net/board/view/32991

이 글이 도움이 될 듯 합니다.

hello70825   5년 전

저 코드 그대로 통과하려면 pypy2로 제출해야 될 겁니다.

저는 딕셔너리 말고 배열을 만들어서 중복 체크를 했는데 pypy2로는 통과하더라구요.

input부분만 raw_input으로 바꾸면 됩니다. stdin.readline 고치는 방법은 모르겠네요.

mycool0905   5년 전

@hello70825 님 감사합니다!

흠.. 올려주신 링크보면서 코드도 좀 고치고 했는데, 아직 잘 안되네요.

일단 머리가 복잡해져서 좀 쉬고 나중에 다시 만져봐야할 문제인 것 같습니다.

다시 한번, 답변 감사드립니다!

Glitterlance   5년 전

애초에 파이썬으로 알고리즘 문제를 푸는 데에 한계가 있다고 생각하는데...파이썬으로 하시는 특별한 이유가 있으신가요?

mycool0905   5년 전

@Glitterlance

아 제가.. 원래 C++로 푸는데, 좀 뭔가 코드를 짧게 쓰고싶어서 파이썬으로 짜고있는데,

파이썬이 내부 라이브러리도 많고 인터프리터 계열이라 느려서 그런지 요새 시간 제한에 많이 걸려서 다시 C++로 돌아갈까 싶네요..

Glitterlance   5년 전

제 친구도 파이썬으로 알고리즘 풀 때 분명히 시간복잡도 상으로는 해결 가능한데 파이썬이라 좀 꼼수를 써서 시간초과 문제 해결하는 경우가 많더라구요...파이썬은 큰 수 처리 알아서 해준다는 것 빼고는 큰 메리트가 없는 것 같아요 ㅠ

jh05013   5년 전

Python 3만으로 BOJ를 한다는 건 사실상 불가능에 가깝고, 오래 걸릴 것으로 예상되면 Pypy로 제출해야 합니다. Pypy로도 시간 내에 못 푸는 문제가 몇 개 있지만 그건 어쩔 수 없고 저도 그 경우에는 C++로 풉니다.

큰 수 다루기 외에도 itertools나 dict 등 편리한 기능이 많고, 코드가 단순해서 익숙해지면 빠르게 짤 수 있다는 장점도 있긴 합니다. 하지만 역시 제대로 하려면 C++인 것 같습니다.

stdin.readline은 Pypy2에서도 그대로 stdin.readline입니다.

jh05013   5년 전

생각해 보니 dict는 C++에도 있군요.

mycool0905   5년 전

@Glitterlance @jh05013

저도 이제야 깨달았네요..ㅎ 조언 감사드려요.

다시 C++로 돌아가서 알고리즘 열심히 해봐야겠습니다!

감사합니다!!

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