문제
LeetCode 2. Add Two Numbers
https://leetcode.com/problems/add-two-numbers/
언어
자바스크립트(JavaScript)
접근 방법
- Loop를 이용하여 푼다.
- l1, l2를 이용하여 현재 node의 val을 계산한다.
- l1, l2의 next가 모두 존재하지 않으면 loop를 종료한다.
- next가 하나라도 존재한다면, node의 next를 다음 loop에서 정의한다.
코드
/**
* Definition for singly-linked list.
* function ListNode(val) {
* this.val = val;
* this.next = null;
* }
*/
/**
* @param {ListNode} l1
* @param {ListNode} l2
* @return {ListNode}
*/
var addTwoNumbers = function(l1, l2) {
let n1 = 0;
let n2 = 0;
let result = new ListNode(0);
let node = result;
// 루프
while(true){
// node의 val 계산
n1 = (l1 && l1.val) + (l2 && l2.val) + n2;
if (n1 >= 10){
n1 -= 10;
n2 = 1;
}else{
n2 = 0;
}
node.val = n1;
// l1, l2 next 확인
l1 = l1 && l1.next;
l2 = l2 && l2.next
// l1, l2 모두 null이면 루프 종료
if (l1 === null && l2 === null){
if(n2 === 1){
node.next = new ListNode(1);
}
break;
}
// l1, l2 둘 중 하나라도 null이 아니면 next 존재
node.next = new ListNode(0);
node = node.next
}
return result;
};
결과
Runtime: 124 ms, faster than 92.75% of JavaScript online submissions for Add Two Numbers.
Memory Usage: 44.1 MB, less than 56.13% of JavaScript online submissions for Add Two Numbers.
복기
- loop안에서 모든 코드를 작성해야 코드가 간단해진다.
- 로직을 먼저 생각했으면 더 빨리 해결했을 듯하다.
'개발 공부 > 알고리즘 문제 풀이' 카테고리의 다른 글
[LeetCode] 3. Longest Substring Without Repeating Characters (0) | 2021.06.22 |
---|---|
[LeetCode] 792. Number of Matching Subsequences (0) | 2021.06.22 |
[프로그래머스] 이진 변환 반복하기 (0) | 2021.04.12 |
[프로그래머스] 퀴드압축 후 개수 세기 (0) | 2021.04.12 |
[프로그래머스] 삼각 달팽이 (0) | 2021.04.12 |