hello70825   5년 전

pypy3으로 통과한 다른 분 코드를 보니 저랑 딱 한가지만 차이가 나더라구요.

그 분은 처음 값을 입력 할 때 lambda를 이용해서 2차원 배열에 (알파벳의 아스키 코드 값)-65를 넣어주었고,

제 코드는 알파벳을 2차원 배열에 넣고 DFS 돌리면서 아스키 코드 값을 확인해주는 것인데 이게 오래 걸리는 일인지 이해를 못하겠습니다.

그리고 딕셔너리를 이용해서 ord를 호출하지 않아도 되는 코드를 작성하였는데, 이건 왜 시간 초과가 나오는 걸까요;;

indioindio   5년 전

아래의 예제를 수행하였을 때, 작성하신 코드의 함수 a의 수행횟수는 33523879 번 입니다.

a=[0] * 100

for _ in range(33523879):

    a[0] = 1

과 

a = [0] * 100

for _ in range(33523879):

    a[ord('A')-65] = 1

을 각각 time python test.py로 수행하였을 때

3.120s, 6.473s 가 걸리네요.


hello70825   5년 전

@indioindio 님, @cubelover 님 감사합니다.

딕셔너리 안에 있는 값을 변경할 때 바로 값이 변하는 줄 알았는데 저런 과정을 통해 값이 변경 한다는 것을 오늘 처음 알았습니다

ord로 값을 구하고 65를 빼는게 여러개 있으니 적어도 두 배 이상일텐데 저런 부분을 생각하지도 못하고 질문 글을 올렸네요

여러가지 배우고 갑니다 ㅎㅎ

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