각 노드의 값이 0~9 사이인 Linked List 두 개가 주어진다. 리스트 안의 값들은 역순으로 저장이 되어 있다. 두 리스트 속의 노드의 합을 새로운 Linked List에 저장하면 된다. 역순으로 저장이 되어있기 때문에 받아올림이 발생할 경우 뒤에 오는 값에 올려준다.
예시를 보면, 각 Linked List의 중간에 있는 노드 값의 합은 10이다. 하지만, 각 노드의 값은 0~9 사이로 올 수 있으므로, Next에 오는 노드에 받아올림이 전달되고, 3+4+1의 값으로 8이 오는 것을 볼 수 있다.
Input1: l1 = [2,4,3], l2 = [5,6,4]
Output1: [7,0,8]
Input2: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
Output2: [8,9,9,9,0,0,0,1]
Linked List에 대한 이해만 있다면 어렵지 않게 풀 수 있는 문제라고 생각한다.
내 경우에는 리스트 안에서 노드를 이동시키면서 각 노드의 값을 더해 출력할 List에 저장해줬는데, 이 방식으로 풀 때 주의할 점은 Root Node의 값을 저장하지 않으면 찾을 방법이 없다는 것이다. 맨 윗줄의 ListNode 클래스는 문제에서 주어졌는데, Double Linked List가 아니기 때문에 현재 노드를 Next로 갖고 있는 Node를 찾기 어렵기 때문이다.
내 경우에는 While Loop가 돌아가기 전에 result에 temp Instance를 지정해서 Root Node를 확보한 이후 L1,L2 노드의 값을 찾아 순서대로 더했다.
문제
https://leetcode.com/problems/add-two-numbers/
코드
https://github.com/ko-inseoklee/ProblemSolving/blob/main/2.AddTwoNumbers.py
연결 리스트를 순회하며 스택이나 다른 자료구조에 저장한 후 Integer로 변환시켜서 덧셈한 다음 다시 문자열로 바꿔서 result를 도출하는 방식은 어떤가요? 글에 적어주신 대안이랑 비슷한 방식인 것 같은데 어떤 방법이 더 빠를지 궁금하네요~