Node 개념을 다루는 문제입니다.
https://leetcode.com/problems/add-two-numbers/
연결이 관련된 노드를 코드로 구현하려고 처음 생각을 하면 생각 이상으로 노드 개념이 머릿속에 자리잡고 있지 않아서 막연하게 어렵다는 생각이 먼저 들었습니다. 연결된 값을 어떻게 이어줘야하지? 라는 생각과 함께 어떻게 구현할까 고민을 했습니다.
기본적인 반복문 이후에 새로 생성한 노드의 값을 첫 노드의 next 에 넣어주는 작업과 동시에 next 에 담긴 ListNode 값에 val 및 next 값을 넣어주는게 관건이네요.
마지막으로 val 값들의 합이 10을 넘을때에 대한 처리를 over 에 값을 넣어서 해결해주고 다음 val 값 합을 할때 사용했는데, l1 과 l2 가 모두 null 일때도 각 ListNode 의 val 합의 값이 10을 넘을때는 새롭게 ListNode 를 만들어서 val 값을 만들어줘야하는 부분을 생각지 못했었던 부분입니다.
ListNode? addTwoNumbers(ListNode? l1, ListNode? l2) {
ListNode node = ListNode();
ListNode? currentNode = node;
int over = 0;
while (l1 != null || l2 != null || over > 0) {
int value = (l1?.val ?? 0) + (l2?.val ?? 0);
value += over;
if (over > 0) {
over--;
}
if (value >= 10) {
over += 1;
value = value - 10;
}
currentNode?.next = ListNode(value);
currentNode = currentNode?.next;
l1 = l1?.next;
l2 = l2?.next;
}
return node.next;
}반응형
'Dev > Algorithm' 카테고리의 다른 글
| [Algorithm] Dart로 풀어보는 역방향 연결 리스트 만들기 (1) | 2025.08.26 |
|---|---|
| [Algorithm] Dart로 풀어보는 Summary Ranges 요약 범위 (1) | 2025.08.04 |
| [Algorithm] Dart로 풀어보는 주식 매수&매도 최적 시기 (4) | 2025.07.31 |
| 간만의 알고리즘 공부 - 23 (가장 가까운 같은 글자) (0) | 2024.07.29 |
| 간만의 알고리즘 공부 - 22 (크기가 작은 부분문자열) (0) | 2024.07.28 |