[문제 설명]
- 주어진 두개의 ListNode에서 각 수를 더하기.
- 더한 값을 다시 ListNode로 return 하기.
[내 풀이법]
- 아무리 풀어봐도 해결이 안되어 다른 블로그 참고.
- 먼저 ListNode의 사용법 익히기.
- ListNode의 맨 마지막값이 없는 경우 null인점을 이용하여 문제 해결.
- 무한루프로 p1, p2의 next가 null까지 돌리기.
- 각 자리수 합은 sum으로 넣되 두 수의 합이 10이 넘어갈 경우를 고려하여 코드 짜기.
class Solution {
public ListNode addTwoNumbers(ListNode l1, ListNode l2) {
ListNode fake = new ListNode(0);
ListNode p = fake;
ListNode p1 = l1;
ListNode p2 = l2;
int carry = 0;
while(p1!=null || p2!=null){
int sum = carry;
if(p1!=null){
sum += p1.val;
p1 = p1.next;
}
if(p2!=null){
sum += p2.val;
p2 = p2.next;
}
if(sum>9){
carry=1;
sum = sum-10;
}else{
carry = 0;
}
ListNode l = new ListNode(sum);
p.next = l;
p = p.next;
}
//don't forget check the carry value at the end
if(carry > 0){
ListNode l = new ListNode(carry);
p.next = l;
}
return fake.next;
}
}