[LeetCode] Add Two Numbers

600g (Kim Dong Geun)·2020년 8월 18일
0

0이상이 들어있는 리스트 2개가 주어진다.
각 리스트는 원 숫자의 역순으로 리스트가 저장되어있고
두 리스트의 합을 다시 리스트로 제출해라 라는 문제다.

스트링 빌더를 통해 Long으로 변환시키고 편하게 풀려했다😫

당연히 Long이상의 값은 연산이 안됐고, 결국은 Head & Tail을 만들어서 Deque을 만드는 구조로 이 문제를 해결했던 것 같다.

위 문제는 기존의 Deque과는 조금 다른점이 존재하는데 , 10이상이 나올 경우

Carry 값으로 체크를 해줘서 뒤에 1을 더해주어야 된다는 점이다.

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        
        ListNode head = null;
        ListNode tail = null;
        
        while(l1!=null && l2 != null){
            int value = l1.val + l2.val;
            
            if(value>=10){
                if(l1.next!=null) l1.next.val++;
                else l1.next = new ListNode(1,null);
                value-=10;
            }
            
            if(head==null){
                ListNode newNode = new ListNode(value, null);
                head = newNode;
                tail = newNode;
            }else{
                ListNode newNode = new ListNode(value, null);
                tail.next = newNode;
                tail = newNode;
            }
            l1 = l1.next;
            l2 = l2.next;
        }
        
        while(l1!=null){
            if(l1.val>=10){
                if(l1.next!=null) l1.next.val++;
                else l1.next = new ListNode(1,null);
                l1.val-=10;
            }
            ListNode newNode = new ListNode(l1.val, null);
            tail.next = newNode;
            tail = newNode;
            l1 = l1.next;
        }
        
        while(l2!=null){
            if(l2.val>=10){
                if(l2.next!=null) l2.next.val++;
                else l2.next = new ListNode(2,null);
                l2.val-=10;
            }
            ListNode newNode = new ListNode(l2.val, null);
            tail.next = newNode;
            tail = newNode;
            l2 = l2.next;
        }
        
        return head;
    }
}

소스코드를 보면 중복코드가 좀 들어가지만 복사붙여넣기의 일환이니 드는 시간은 적었다.

이렇게 보고나니 약간 머지소트의 소스코드의 느낌도 난다 (방법은 다르지만)

아무튼 해결 👌

profile
수동적인 과신과 행운이 아닌, 능동적인 노력과 치열함

0개의 댓글