TIL

[코테연습] 2181. Merge Nodes in Between Zeros

크라00 2024. 7. 4. 10:34

- Linked List 문제

 

https://leetcode.com/problems/merge-nodes-in-between-zeros/description/?envType=daily-question&envId=2024-07-04

- 문제 해석

1. single LinkedList 로 연결되어있는 ListNode 가 있다.
2. 해당 ListNode가 0 이면 그 이전까지의 node 의 숫자를 합하여 새로운 ListNode 로 만들어라.

- 문제 풀이

1. ListNode 를 확인하기위해서는 재귀함수를 이용한다.
2. target 될 ListNode 의 val 이 0 일 때, 새로운 ListNode 를 ListNode.next 에 넣는다.
3. val 이 0 이 아닐 때는, head.val 값을 sum 에 더하여 재귀함수를 호출한다.

 

class Solution {
    public ListNode mergeNodes(ListNode head) {
        ListNode node = new ListNode();
        merge(head.next, node, 0);
        // find(node);
        return node.next;
    }
    void merge(ListNode head, ListNode node, int sum) {
        if (head == null) {
            return;
        }
        if (head.val == 0) {
            node.next = new ListNode(sum);
            sum = 0;
            merge(head.next, node.next, sum);
        } else {
            sum+=head.val;
            merge(head.next, node, sum);
        }
    }
    void find(ListNode head) {
        if (head == null) {
            return;
        }
        find(head.next);
    }
}