brenda524   2년 전

line10: heapq.heappush(heap, (-num,num)) #(우선순위,값)으로 코딩하는 이유가 무엇인가요?

        또한, 여기서 튜플을 사용하는 이유는 무엇인가요?


line13 : 튜플로 반환하기 때문에 해당 튜플에서 본래 입력된 값을 출력해줘야 함 -> 따라서, 두번째 요소를 반환해야 한다고 하는데, 이게 무슨 말인지 잘 이해가 안 됩니다. 

sonjaewon   2년 전

heap 에 가장 큰 원소를 뽑기 위해서 하는것 같아요

andyjung2104   2년 전

기본적으로 heap에 num 자체만 넣고 정렬을 하면 작은수부터 정렬되기 때문에, 앞의 수부터 비교하면서 정렬을 하는 tuple의 성질을 이용해서 (-num,num) 자체를 heap에 넣고 정렬을 하면 num이 큰 tuple부터 작은 tuple 순으로 정렬이 됩니다. 우리는 num을 얻고 싶은 것이었으니까 이 tuple의 두번째 수를 뽑으면 됩니다. (아니면 -(첫번째 수)도 같은 이유로 num이 됩니다)

andyjung2104   2년 전

list를 사용해도 똑같이 되지만, tuple을 사용하는 이유는 조금 더 빨라서인것 같네요

brenda524   2년 전

list를 사용하려면 어떻게 코드를 작성해야 하나요?

brenda524   2년 전

혹시 line10을 heapq.heappush(heap, -num)으로 바꿔도 될까요?

andyjung2104   2년 전

네 저도 heapq.heappush(heap,-num)으로 했어요

마지막에만 부호 바꿔서 출력하면 되죠

list를 사용한다는 거는 그냥 (-num,num)을 [-num,num]으로 바꾼다는 얘기였어요!

brenda524   2년 전

tuple이 조금 더 빠른 이유가 무엇인가요?

list와 tuple 중 정렬 관련해서는 tuple을 더 많이 사용하는게 맞나요?

andyjung2104   2년 전

배열이 변할 필요가 없다면 list보다는 tuple을 사용하는 게 나을 것 같아요

tuple이 더 빠른 이유는 이런 곳을 참고하시면 될 듯 합니다

https://stackoverflow.com/ques...

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