본문 바로가기
알고리즘

Daily Coding 01. transformFirstAndLast

by 디디 ( DD ) 2023. 1. 23.

Q. (string 타입을 요소로 갖는) 배열을 입력받아, 차례대로 배열의 첫 요소와 마지막 요소를 키와 값으로 하는 객체를 리턴해야 합니다.

 

 

//첫 번째 풀이

function transformFirstAndLast(arr) {
  let first = arr[0];  //첫 요소
  let last = arr[arr.length-1];  //마지막 요소
  if(arr.length === 0){  //빈 배열을 입력받은 경우, 빈 객체를 리턴
    return {};
  }
  return {first : last};
}

 이렇게 하니까 객체의 키 부분에 넣은 first가 변수로 인식되질 않았다.  

 

 

//두 번째 풀이

function transformFirstAndLast(arr) {
  let first = arr[0];  //첫 요소
  let last = arr[arr.length-1];  //마지막 요소
  let obj = {};
  if(arr.length === 0){  //빈 배열을 입력받은 경우, 빈 객체를 리턴
    return {};
  }
  obj[first] = last;
  return obj;
}

 그래서 빈 객체를 만들어 키와 값을 추가해 주는 방식으로 테스트를 통과하였다. 

 

 

//세 번째 풀이

function transformFirstAndLast(arr) {
  let first = arr[0];  //첫 요소
  let last = arr[arr.length-1];  //마지막 요소
  if(arr.length === 0){  //빈 배열을 입력받은 경우, 빈 객체를 리턴
    return {};
  }
  return {[first] : last};
}

 찾아보니 첫 번째 풀이에서 변수로 인식되지 않았던 키 부분을 대괄호 안에 넣어주면 된다는 것을 알게 되었다. 이렇게 해도 테스트가 통과된다. 

 

 

//레퍼런스 코드

function transformFirstAndLast(arr) {
  let result = {};
  if (arr.length > 0) {
    result[arr[0]] = arr[arr.length - 1];
  }
  return result;
}

 마지막으로 레퍼런스 풀이를 살펴보았다. 첫 요소와 마지막 요소를 굳이 변수로 선언하지 않고, 빈 배열도 따로 걸러내지 않는 방법인 것 같다. 

 

 

 

 

 

'알고리즘' 카테고리의 다른 글

Daily Coding 06. letterCapitalize  (0) 2023.01.25
Daily Coding 05. firstReverse  (0) 2023.01.25
Daily Coding 04. firstCharacter  (0) 2023.01.24
Daily Coding 03. powerOfTwo  (0) 2023.01.24
Daily Coding 02. computeWhenDouble  (0) 2023.01.23

댓글