연결 리스트의 head가 주어졌을 때, 리스트의 역순 연결 리스트를 반환하는 문제.
연결 리스트의 개념은 알고 있으나, 구현하기 쉽지 않았다.
class ListNode(object):
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution(object):
def reverseList(self, head):
prev = None
while head:
next = head.next
head.next = prev
prev = head
head = next
return prev
코드 이해를 하기가 너무 어려웠다.
먼저 이전 노드를 저장할 prev를 선언해준다.
모든 헤드를 돈다:
현재 헤드의 다음으로 연결된 노드를 next에 저장한다.
헤드의 다음 연결 노드를 이전 노드로 설정한다.(처음엔 None으로 선언되어 있으니 None.)
현재의 헤드를 prev에 선언한다.
next를 헤드로 선언한다.
prev를 반환한다.(prev를 헤드로 선언했으니까)
이해를 하긴 했는데 다시 구현하라고 하면 못하겠다. 외우기라도 해야겠다.