Problem
- Write a function that gives all the ways to divide a list of at least two elements into two non-empty parts.
- 배열의 element를 비어 있지 않은 2개의 부분으로 나눌 수 있는 모든 방법을 반환한다.
- 각 element는 문자열이다.
Solution 01
function partList(arr) {
let result = [];
for (let i = 1; i < arr.length; i++) {
let temp = [];
temp.push(arr.slice(0, i).join(' '));
temp.push(arr.slice(i).join(' '));
result.push(temp);
}
return result;
}
partList(['HTML', 'CSS', 'JS', 'React']);
// [['HTML', 'CSS JS React'], ['HTML CSS', 'JS React'], ['HTML CSS JS', 'React']]
push()
: 배열의 끝에 새 element를 추가하고, 새로운 길이를 반환한다.
slice()
: 문자열/배열의 일부를 추출하고, 새 문자열/배열로 반환한다.
join()
: 배열의 모든 element를 결합하고, 새 문자열로 반환한다.
Solution 02
function partList(arr) {
return arr.map((result, i) => [arr.slice(0, i).join(' ').arr.slice(i).join(' ')]).slice(1);
}
partList(['HTML', 'CSS', 'JS', 'React']);
// [['HTML', 'CSS JS React'], ['HTML CSS', 'JS React'], ['HTML CSS JS', 'React']]
map()
: 배열 내 모든 element에 대해, 호출한 함수의 결과를 모아 새 배열로 반환한다.