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 |
댓글