class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
"""
head 를 가지고 조작하면 역순으로 정렬된 것을 만들기 힘듦
head 를 포함한 list 를 만들어 그 list 를 역순으로 정렬하고자 했다.
Input: head = [1,2,3,4,5], left = 2, right = 4 에서 바꾼다고 가정하면
2,3,4 에서 변경을 해줘야 함
2,3,4 -> 3,2,4 -> 4,3,2
temp = 끊었던 list 를 저장하기 위한 변수
end_temp = 순서를 바꿀 영역 ( 순서를 바꿀 때마다, 순서를 바꾼 숫자를 빼서 이동)
"""
class Solution:
def reverseBetween(self, head: ListNode, left: int, right: int) -> ListNode:
result = current = ListNode()
result.next = head
for i in range(left-1):
current = current.next
end_temp = current.next
for i in range(right - left):
temp = current.next
current.next = end_temp.next
end_temp.next = end_temp.next.next
current.next.next = temp
return result.next