October 2nd 2018
Note that zero is even number. If you have an empty array, you need to return it.
Example sortArray([5, 3, 2, 8, 1, 4]) == [1, 3, 8, 4, 5, 2]
배열의 홀수는 오름차순으로, 짝수는 내림차순으로 배열을 정리하는 문제입니다. 홀수와 짝수의 자리는(index) 그대로 지켜야 합니다.
저의 풀이과정은 아래와 같습니다. - loop를 한 번 돌며 홀수만의 배열, 짝수만의 배열을 만듭니다. - 두 배열을 조건에 맞게 정렬합니다. (홀수: 오름차순, 짝수: 내림차순) - 원본 배열을 다시 map으로 돌며, 홀수 / 짝수 차례에 맞게 위 두 배열을 맨 앞요소를 return 합니다.
function sortArray(array) {
const even = [];
const odd = [];
array.forEach(num => {
num % 2 === 0 ? even.push(num) : odd.push(num);
});
even.sort((a, b) => b - a);
odd.sort((a, b) => a - b);
return array.map(num => (num % 2 === 0 ? even.shift() : odd.shift()));
}
아래와 같이 filter method를 사용해 풀 수도 있습니다.
function sortArray(array) {
const odd = array.filter(num => num % 2 !== 0).sort((a, b) => a - b);
const even = array.filter(num => num % 2 === 0).sort((a, b) => b - a);
return array.map(el => (el % 2 !== 0 ? odd.shift() : even.shift()));
}