okqwaszx123   1년 전

제 풀이는 딕셔너리에 A 부터 Z 까지를 전부 알파벳을 key 값으로, value 값은 T/F여부로 선언을 해 두고,

이미 방문한 (value 값이 T) 경우는 pass , 방문 할 경우 T로 값을 바꾸어 주는 방식으로 백트래킹을 진행했습니다.

다른 분들 DFS 풀이와 차이가 set로 경로를 저장한 차이밖에 존재하지 않는데,

딕셔너리에서도 해당 값을 O(1)로 찾기 때문에 set와 차이가 없을 것이라 생각하고 딕셔너리로 코드를 짜 본거거든요.

그런데 제 풀이는 시간초과가 나고, 제 코드에서 딕셔너리 대신 set로 판단하게 변경하면 통과가 되더라구요.

혹시 딕셔너리가 어떤 부분에서 set보다 비효율적인건지 알려주실분 계실까 해서 질문드립니다.

 

djm03178   1년 전

통과하신 코드도 7.4초에 육박하고, 이 문제의 파이썬 시간 제한은 8초이니 별 차이가 없습니다. 이 정도는 제출할 때마다의 실행 시간 오차로도 충분히 바뀔 수 있는 수준입니다.

dict가 set보다 비효율적이라고 해도, 시간 비율상 10% 정도의 작은 차이로도 7.4초에 8초를 넘을 수 있습니다. dict가 각 원소당 그 value를 저장하는 공간을 추가로 쓴다는 것 외에는 특별한 차이가 있을 것 같지 않기에 정말 이 정도의 작은 차이일 거라고 생각합니다. 또한 이런 부분은 PyPy와 Python의 구현체 차이로도 얼마든지 뒤바뀔 수 있습니다. 이런 미세한 시간 차이에 연연하기 보다는, 아예 해시와 같이 무거운 구조를 쓰지 않고 획기적으로 시간을 줄이는 방법을 생각하는 편이 낫습니다.

tbnsok40   1년 전

안녕하세요 코드 잘 읽었습니다 

궁금한 점이 하나 있는데, 혹시 21번 라인에서 왜 check[alph] 를 다시 False 로 할당하셨는지 알 수 있을까요?

djm03178   1년 전

그래야 다른 경로를 통해 해당 칸에 도달하는 경우를 체크할 수 있습니다.

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