listToArray.js (7kyu 68)

Codewars 알고리즘 풀이


Problem

  • Linked lists are data structures composed of nested or chained objects, each containing a single value and a reference to the next object.
    • 링크드 리스트는 중첩 또는 연결된 객체로 구성된 데이터 구조이다.
  • Write a function that converts a list to an array.
    • 리스트를 배열로 변환하는 함수를 작성한다.


list

const list1 = { value: 1, next: { value: 2, next: null } };
const list2 = { value: 'Sam', next: { value: 'Leo', next: null } };


Solution 01

function listToArray(list) {
  for (var arr = []; list !== null; list = list.next) {
    arr.push(list.value);
  }
  return arr;
}

push(): 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.


Solution 02

function listToArray(list) {
  let arr = [];
  
  for (let node = list; node; node = node.next) {
    arr.push(node.value);
  }
  return arr;
}


Solution 03

function listToArray(list) {
  let arr = [];
  
  while (list) {
    arr.push(list.value);
    list = list.next;
  }
  return arr;
}


Solution 04

function listToArray(list) {
  return !list ? [] : [list.value].concat(listToArray(list.next));
}

concat(): 두 개 이상의 배열을 결합하고, 새 배열을 반환한다.


Solution 05

function listToArray(list) {
  if (list === null) return [];
  return [list.value, ...listToArray(list.next)];
}