Notice
Recent Posts
Recent Comments
Link
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

개발 일지

2. Add Two Numbers (두 숫자 더하기) 본문

코딩 테스트/LeetCode

2. Add Two Numbers (두 숫자 더하기)

포카리tea 2023. 4. 24. 10:07

두 개의 음수 가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다 . 숫자는 역순 으로 저장되며 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 더하고 합계를 연결 리스트로 반환합니다.

숫자 0 자체를 제외하고 두 숫자에 선행 0이 포함되어 있지 않다고 가정할 수 있습니다.

 

예시 1:

입력: l1 = [2,4,3], l2 = [5,6,4]
출력: [7,0,8]
설명: 342 + 465 = 807.

 

예시 2:

입력: l1 = [0], l2 = [0]
출력: [0]

 

예시 3:

입력: l1 = [9,9,9,9,9,9,9], l2 = [9,9,9,9]
출력: [8,9,9,9,0,0,0,1]

 

조건:

  • 각 연결 목록의 노드 수는 범위에 있습니다 [1, 100].
  • 0 <= Node.val <= 9
  • 목록이 선행 0이 없는 숫자를 나타내는 것이 보장됩니다.

 

정답:

public class Solution {
    public ListNode AddTwoNumbers(ListNode l1, ListNode l2) {
        ListNode list = new ListNode();
        var pointer = list;
        int result = 0;
        while(l1 != null || l2 != null)
        {
            result = (l1 == null ? 0 : l1.val) + (l2 == null ? 0 : l2.val) + result;
            pointer.next = new ListNode(result % 10);
            pointer = pointer.next;
            result /= 10;

            if (l1 != null) l1 = l1.next;
            if (l2 != null) l2 = l2.next;
        }
        if(result != 0)
        {
            pointer.next = new ListNode(result);
        }
        return list.next;
    }
}

해설: 

예시 1에서
1. 3 + 4 = 7, 7은 유지
2. 4 + 6 = 10, 0을 유지하고 1을 다음 루프로 이동
3. 2 + 5 = 7, 이전 루프에서 1을 더하여 현재 숫자가 8가 되어 807이 됩니다.
예시 3처럼 어느 한쪽의 길이가 짧다면 그 칸은 0으로 두고 계산하였습니다.