Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(2. Add Two Numbers)

silvergoni 2022. 5. 6. 10:37
반응형

https://leetcode.com/problems/add-two-numbers/

 

1. 2022/05/06 시도

소요시간: 5분

class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        
        ListNode current = new ListNode();
        ListNode head = current;
        int add = 0;
        while (l1 != null || l2 != null) {
            int lv1 = l1 == null ? 0 : l1.val;
            int lv2 = l2 == null ? 0 : l2.val;
            
            int sum = lv1+lv2 + add;
            add = sum / 10;
            current.next = new ListNode(sum % 10);
            current = current.next;
            l1 = l1 == null ? null: l1.next;
            l2 = l2 == null ? null: l2.next;
        }
        
        if ( add > 0) {
            current.next = new ListNode(add);
        }
        
        return head.next;
    }
}

풀이 접근 과정

더미 노드(current)를 만들고 그 다음을 계속 연결해주도록 한다.
head로 더미노드의 첫번째를 기억해두어 나중에 리턴할 때 요긴하게 써먹는다.

두 노드를 차례대로 읽어들으면서 덧셈을 해주고
add에는 올림되는 숫자를 기록한다.

마지막에 올림이 있을 수 있으니 올림을 확인하고 있다면 노드를 추가해준다.

 

느낀점

  • 이번 문제의 핵심은 한번에 푸느냐인것 같다. 안타깝게도 나도 한번에 풀지 못했다. edge케이스를 잘 생각해서 푸는 연습이 필요하다.

 


알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형