[Leetcode] 2. Add Two Numbers
[Leetcode] 2. Add Two Numbers

[Leetcode] 2. Add Two Numbers

카테고리
📚 Algorithm
작성자
박용성박용성
작성일
2024년 06월 02일
태그
C
Python
Leetcode
Slug
Leetcode-2
 

🖥️ 시작하며

문제에 주어진 상황 그대로 풀면 된다.
각 노드를 순회하며 val 값을 더해주면 된다.
 

⚙️ Python

from typing import Optional class ListNode: def __init__(self, val=0, next=None): self.val = val self.next = next class Solution: def addTwoNumbers( self, l1: Optional[ListNode], l2: Optional[ListNode] ) -> Optional[ListNode]: res = ListNode(0) # 더미 노드 cur = res carry = 0 while ( l1 or l2 or carry ): # l1, l2 둘 중 하나라도 남아 있거나, carry가 있는 경우 계속 실행 sum = carry if l1: sum += l1.val l1 = l1.next if l2: sum += l2.val l2 = l2.next carry = sum // 10 cur.next = ListNode(sum % 10) cur = cur.next return res.next s = Solution() print(s.addTwoNumbers(l1=[2, 4, 3], l2=[5, 6, 4]))

⚙️ C++

#include <vector> using namespace std; // Definition for singly-linked list. struct ListNode { int val; ListNode *next; ListNode() : val(0), next(nullptr) {} ListNode(int x) : val(x), next(nullptr) {} ListNode(int x, ListNode *next) : val(x), next(next) {} }; class Solution { public: ListNode *addTwoNumbers(ListNode *l1, ListNode *l2) { ListNode *res = new ListNode(0); ListNode *cur = res; int carry = 0; while (l1 || l2 || carry) { // l1, l2 또는 carry 중 하나라도 있는 경우 계속 실행 int sum = carry; if (l1) { sum += l1->val; l1 = l1->next; } if (l2) { sum += l2->val; l2 = l2->next; } carry = sum / 10; cur->next = new ListNode(sum % 10); cur = cur->next; } return res->next; // dummy node의 다음 노드를 반환 } };
 
 

📌 소감

 

🔍 부록

🔍 참고문헌


 

댓글

guest