스파르타 코딩클럽/2주차

연결 리스트 합 구하기

코딩쪼앙 2022. 3. 17. 22:14

문제 

연결리스트를 구현 한 후 각 노드들의 계산 결과를 구하는 함수를 따로 만들어 연산을 수행 하였다.

class Node:
    def __init__(self, data):
        self.data = data
        self.next = None


class LinkedList:
    def __init__(self, value):
        self.head = Node(value)

    def append(self, value):
        cur = self.head
        while cur.next is not None:
            cur = cur.next
        cur.next = Node(value)

# 리스트의 합을 계산하는 함수
def calc_linked_list(linked_list):
    list_sum = 0
    head = linked_list.head
    while head is not None:
        list_sum = list_sum * 10 + head.data
        head = head.next
    return list_sum

def get_linked_list_sum(linked_list_1, linked_list_2):
    list_1 = calc_linked_list(linked_list_1)
    list_2 = calc_linked_list(linked_list_2)
    result = list_1 + list_2
    return result
    
linked_list_1 = LinkedList(6)
linked_list_1.append(7)
linked_list_1.append(8)

linked_list_2 = LinkedList(3)
linked_list_2.append(5)
linked_list_2.append(4)

print(get_linked_list_sum(linked_list_1, linked_list_2))

합을 계산 하는 방법은 각 리스트의 head값 부터 시작해서 다음 노드 값으로 넘어갈 때 10을 곱한 후 다음 노드의 값을 더해주면 간단하게 결과를 구할 수 있다.