function solution(arr, divisor) {
arr = arr.filter((num) => !(num % divisor));
return arr.length ? arr.sort((a, b) => a - b) : [-1];
}
arr 배열에 담겨있는 숫자들 중, divisor로 나누어지는 값을 오름차순으로 정렬한 배열을 출력하는 문제다.
filter
를 이용해서 num % divisor
이 0인 값만 걸러낸다.function solution(numbers) {
const answer = [];
for (let i = 0; i < numbers.length; i++) {
for (let j = i+1; j < numbers.length; j++) {
answer.push(numbers[i] + numbers[j]);
}
}
numbers = [...new Set(answer)].sort((a, b) => a - b);
return numbers;
}
다른 인덱스에 있는 두 개의 수를 더해서 만들 수 있는 모든 수를 오름차순으로 정렬한 배열을 출력하는 문제이다.
j = i + 1
인 이유는 어차피 다른 인덱스에 있는 수를 더해야 하고, i 이전 수는 전에 이미 더했었기 때문에 굳이 해주지 않아도 되기 때문이다.set
으로 묶어 중복을 제거하고, sort
로 정렬한 후 출력한다.function solution(arr)
{
let answer = [];
for (let a of arr) {
if (a !== answer.slice(-1)[0]) answer.push(a);
}
return answer;
}
배열 arr에서 연속적으로 나타나는 숫자를 제거하고 남은 수를 출력하는 문제이다.
처음에는 위와 같이 answer라는 배열을 만들고, 그 안에 값들을 하나씩 넣고 answer의 마지막 원소와 비교하여 push 하는 방법으로 문제를 풀었다.
이 방법도 맞지만 다른 분들의 풀이를 참고하여 다른 방법으로도 풀어보았다.
function solution(arr)
{
return arr.filter((item, idx) => item !== arr[idx+1]);
}
이 풀이는 위에서 answer라는 배열을 따로 만들고 이 배열의 마지막 원소와 현재 원소를 비교하여 문제를 풀었던 방식과 반대이다.
현재 원소값과 그 다음 원소값이 다를 경우에만 배열에 넣어주면 된다.
function solution(s) {
return s.split('').sort().reverse().join('');
}
주어지는 문자열 s를 내림차순으로 정렬하는 문제이다.
대문자는 소문자보다 아스키코드가 작기 때문에, 내림차순으로 정렬하면 알아서 맨 뒤로 정렬된다.
sort()
로 정렬한다.join
으로 배열을 합치고 출력한다.여기서 1. s를 배열로 바꾼다.
를 나는 s.split('')
으로 풀었지만,
[...s]
처럼 자바스크립트의 스프레드 연산자
를 이용해서 쉽게 바꿀 수 있다.
function solution(numbers) {
let answer = 0;
for (let n = 0; n < 10; n++) {
if (!numbers.includes(n)) {
answer += n;
}
}
return answer;
}
numbers 배열에 0부터 9까지 숫자 중 없는 숫자를 찾아 더한 수를 출력하는 문제다.
다른 분들의 코드를 참고하던 중, 정말정말 신박한 풀이를 발견했다.
function solution(numbers) {
return 45 - numbers.reduce((acc, cur) => acc + cur, 0);
}
0부터 9까지의 합이 45이므로 reduce
를 이용하여 numbers 배열의 합을 구하고 빼면 없는 수의 합을 구할 수 있다.
너무 간단하고 신박한 풀이다. 짱..
하지만 이 방법은 지금 문제에서 주어진 것처럼 0부터 9라는 숫자의 범위가 주어지고, numbers의 모든 원소가 서로 다르다는 조건이 있기 때문에 성립될 수 있다.
function solution(arr) {
arr.splice(arr.indexOf(Math.min(...arr)), 1);
return arr.length ? arr : [-1];
}
배열 arr에서 가장 작은 수를 제거한 배열을 출력하는 문제이다.
Math.min
을 이용해서 배열에서 가장 작은 수를 찾는다.Math.min
을 사용하려면 스프레드 연산자를 사용해야 한다. Math.min(...arr)
indexOf
를 이용하여 배열 내 특정 수의 인덱스를 구한다.splice
를 이용하여 특정 원소를 삭제한다.splice(인덱스, 삭제할 원소의 개수)
function solution(n) {
return +([...(n + '')].sort((a, b) => b - a).join(''));
}
n이라는 정수의 각 자릿수를 내림차순으로 정렬한 정수를 리턴하는 문제다.
n + ''
을 이용해 문자열로 바꿔준다.sort((a, b) => b - a)
으로 내림차순으로 정렬한다.join
으로 합쳐주고 출력한다.