문제
두 개의 음수가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다. 숫자는 역순으로 저장되며 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 더하고 그 합계를 연결된 목록으로 반환합니다.
숫자 0 자체를 제외하고는 두 숫자에 선행 0이 포함되어 있지 않다고 가정할 수 있습니다.
예시 1:
입력: l1 = [2,4,3], l2 = [5,6,4]
출력: [7,0,8]
설명: 342 + 465 = 807.
예 2:
입력: l1 = [0], l2 = [0]
출력: [0]
예시 3:
입력: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
출력: [8,9,9,9,0,0,0,1]
제약:
각 연결 목록의 노드 수는 [1, 100] 범위 내에 있습니다.
0 <= Node.val <= 9
목록은 앞에 0이 없는 숫자를 나타내는 것이 보장됩니다.
접근 방법
문제를 정확하게 이해하지 못한 상태로 풀려고 해서 애를 먹었다.
설명에 낚여서 거꾸로 출력하는 거라 이해하고 각각 스택에 담아서 시도를 해봤지만 원하는 답이 나오지 않았다.
결국 다른 블로그 풀이를 봤고, 두 노드의 끝까지 각 합을 구하면서 다음 자릿수가 1이 증가할 때 추가적인 처리를 하면 되는 문제였다.
근데 반환이 ListNode라 어떤 방식으로 생성해둬야 할 지도 애매했다. 처음 생성해놓은 노드를 다른 노드가 참조하게끔 한 다음에 합계를 구하는 부분에서 다음 노드를 생성해놓고 현재 노드가 다음 노드를 참조하게끔 되어 있던데 원 노드를 참조하는 부분에서 명확히 이해가 안됐다.
어려운 문제가 맞는건지 오랜만에 풀어서 그런지 모르겠다. 차근차근 풀어봐야겠다!