[LeetCode/Java] 2. Add Two Numbers

yuKeon·2023년 8월 28일
0

LeetCode

목록 보기
13/29
post-thumbnail

0. 문제

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


1. 문제 설명

  • 양의 정수로 이뤄진 두 개의 LinkedList가 주어진다.
  • 숫자는 역순으로 저장되어 있을 때 두 숫자를 더한 합계를 LinkedList로 반환하라.

2. 문제 풀이

2.1. 접근법

  • l1과 l2를 조회하면서 각 요소를 더한다.
  • 10이 넘어가는 경우 올림을 해야 하기 때문에 roundUp 변수를 설정한다.
  • l1과 l2의 길이가 다를 수 있기 때문에 while 조건문을 l1, l2 중 하나라도 null이 아닌 경우로 설정한다.

3. 코드

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode() {}
 *     ListNode(int val) { this.val = val; }
 *     ListNode(int val, ListNode next) { this.val = val; this.next = next; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode node = new ListNode(0);
        ListNode result = node;
        int roundUp = 0;
        int sum = 0;
        
        while (l1 != null || l2 != null) {
            sum = roundUp;
            
            if (l1 != null) {
                sum += l1.val;
                l1 = l1.next;
            }
            
            if (l2 != null) {
                sum += l2.val;
                l2 = l2.next;
            }
            
            if (sum >= 10) {
                node.next = new ListNode(sum - 10);
                roundUp = 1;
            } else {
                node.next = new ListNode(sum);
                roundUp = 0;
            }
            
            node = node.next;
        }
        
        if (roundUp == 1) {
            node.next = new ListNode(1);
        }
        
        return result.next;
    }
}

4. 결과

0개의 댓글