파이썬 알고리즘 책으로 공부 중인데 연결 리스트 부분에서 변수 값 변환되는게 이해되지 않아서 질문드립니다.
연결 리스트는 head : 1->2->3->4->5->6 이고 중간에 2~5를 역순으로 뒤집어 1->5->4->3->2->6으로 변환하는 문제입니다.
중간에 반복 구조로 노드를 뒤집는 부분에서
root = start = ListNode(None)
root.next = head # root : None-1-2-3-4-5-6
for _ in range(m-1):
start = start.next # start : 1-2-3-4-5-6
end = start.next # end : 2-3-4-5-6
for _ in range(n-m):
tmp = start.next # tmp : 2-3-4-5-6
start.next = end.next # start : 1-3-4-5-6
end.next = end.next.next # end : 2-4-5-6
start.next.next = tmp # start : 1-3-2-3-4-5-6??
이런 풀이가 나오는데 제가 생각하기로는 주석달아 놓은거처럼 바뀔거같은데 확인해보니까 end.next = end.next.next
이 부분에서 tmp
가 end
와 같은 값으로 변환되더라고요...
그 이유를 좀 알 수 있을까요?