celestial   2년 전

원래 C++ 사용자라 익숙하지는 않은데요

계속 시간초과가 납니다.

visited=[]를 전역 선언해주어 방문했던 곳을 재방문하지 않도록 해주었고

한번 탐색을 돌 때마다(늑대를 발견하는 좌표에서) BFS를 시작, 늑대와 양의 개수를 구한 뒤 조건에 맞게 처리하였습니다.

그런데 계속 시간 초과가 뜨네요.

음 한번 방문했던 곳을 재방문하지도 않고, 뭔가 C++에서 accept 되었던 코드를 그대로 군더더기 없이 conversion 한 듯 보이는데(?) 왜 이런 결과가 나오는지 궁금합니다.

도와주시면 대단히 감사합니다.

ahj1592   2년 전

혹시 해결하셨나요?

`visited`가 리스트라서 (x, y) not in visited'가 선형시간이라서 느립니다. 이 부분을 O(1)로 하시면 됩니다.

예를들어 visited를 딕셔너리로 바꾸시거나, visited를 2차원배열로 만들어서 True, False로 확인하는 방법이 있습니다.

celestial   2년 전

@ahj1592 님, 댓글 달아주셔서 감사합니다! 

네네 c++에서 하던 대로 visited를 2차원 배열로 만들어서 O(1)로 접근하도록 했더니 accepted 되었었습니다ㅎㅎ 

앞으로 계속 python으로 관련 문제를 풀 때 visited도 2차원으로 선언해서 풀고 있습니다. 

감사합니다 ㅎㅎ

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