LeetConde - 61. Rotate List

zwon·2023년 11월 23일
0

문제

문제 : 61. Rotate List

문제는 간단하다.
linked list가 주어지고 k만큼 오른쪽으로 회전한 결과값을 반환하면 된다.

풀이

from collections import deque
class Solution(object):
    def rotateRight(self, head, k):
        if head == None:
            return None

        answer = deque()
        curr = head

        while curr:
            if curr.next == None:
                answer.append(curr.val)
                break
            answer.append(curr.val)
            curr = curr.next

        answer.rotate(k)

        listNode = ListNode(answer[0])
        curr_node = listNode
        for i in range(1,len(answer)):
            new_node = ListNode(answer[i])
            curr_node.next = new_node
            curr_node = curr_node.next
        return listNode
  • 간단하게 설명하자면 while문을 돌아서 deque()에 val값들을 넣어주고, 반환타입이 listNode라서 deque()의 값들을 하나씩 꺼내 ListNode로 생성해주고 연결해주었다.
  • 처음엔 curr_node가 아닌 listNode를 바로 사용해서 작성했더니,
listNode = ListNode(answer[0])
	for i in range(1,len(answer)):
        new_node = ListNode(answer[i])
        listNode.next = new_node
        listNode = listNode.next
    return listNode
  • listNode = listNode.next때문에 항상 마지막 값으로 세팅되게 해줘서 마지막 노드만 반환되었다.
  • 그래서 curr_node를 생성해서 연결한 후 반환값으로 첫 번째 노드를 반환하도록 해주었다.

메모

  • deque()의 rotate()함수 사용
  • deque()의 rotate()함수를 사용하지 않고 풀어봐야겠다.
  • linked List 복습
profile
Backend 관련 지식을 정리하는 Back과사전

0개의 댓글