개발 일지
2. Add Two Numbers (두 숫자 더하기) 본문
두 개의 음수 가 아닌 정수를 나타내는 두 개의 비어 있지 않은 연결 목록이 제공됩니다 . 숫자는 역순 으로 저장되며 각 노드에는 단일 숫자가 포함됩니다. 두 숫자를 더하고 합계를 연결 리스트로 반환합니다.
숫자 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으로 두고 계산하였습니다.
'코딩 테스트 > LeetCode' 카테고리의 다른 글
6. Zigzag Conversion (지그재그 변환) (0) | 2023.05.09 |
---|---|
9. Palindrome Number (회문 번호) (0) | 2023.04.24 |
1. Two Sum (두 합) (0) | 2023.04.10 |
225. Implement Stack using Queues (큐를 사용하여 스택 구현) (0) | 2023.04.03 |
14. Longest Common Prefix (가장 긴 공통 접두사) (0) | 2023.03.20 |