본문 바로가기

Algorithm/문제풀이

[LeetCode] 2번: Add Two Numbers

문제링크https://leetcode.com/problems/add-two-numbers/

 

문제풀이

두 링크드 리스트의 각 숫자끼리 짝지어 차례로 더하는 문제이다.

링크드 리스트의 길이가 서로 다를 때 오류가 발생하여 한쪽 값이 null이면 숫자 0을 더하도록 수정했다.

 

소스코드

/**
 * Definition for singly-linked list.
 * public class ListNode {
 *     int val;
 *     ListNode next;
 *     ListNode(int x) { val = x; }
 * }
 */
class Solution {
    public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
        ListNode nextNode = null;
		ListNode result = null;
		int next = 0;
		while (true) {
			if (l1 == null && l2 == null) break;

			int val1 = l1 == null ? 0 : l1.val;
			int val2 = l2 == null ? 0 : l2.val;
			
			// 한쪽 길이가 다를 때 null뜸
			int sum = val1 + val2 + next;
			
			if (result == null) {
				result = new ListNode(sum % 10);
				nextNode = result;
			}
			else {
				nextNode.next = new ListNode(sum % 10);
				nextNode = nextNode.next;
			}

			l1 = l1 == null ? null : l1.next;
			l2 = l2 == null ? null : l2.next;

			next = sum / 10;
		}
		
		if (next != 0) nextNode.next = new ListNode(next);
		
		return result;
    }
}