💡 구글에 Javascript 풀이가 많이 없거나, 배운 점이 있으면 포스팅합니다.
function solution(numbers) {
let set = new Set();
for (let p1 = 0; p1 < numbers.length; p1++) {
for (let p2 = p1 + 1; p2 < numbers.length; p2++) {
set.add(numbers[p1] + numbers[p2]);
}
}
let result = [];
for (let num of set) {
result.push(num);
}
return result.sort((a, b) => a - b);
}
function solution(numbers) {
const temp = []
for (let i = 0; i < numbers.length; i++) {
for (let j = i + 1; j < numbers.length; j++) {
temp.push(numbers[i] + numbers[j])
}
}
const answer = [...new Set(temp)]
return answer.sort((a, b) => a - b)
}
접근 방법은 똑같다.
하지만 나는 1) 결과를 셋에 담고 2) for ( of ) 로 어레이에 담고 3) sort했다.
다른 풀이는 1) 결과를 배열에 담고 2) ...new Set(temp)
로 중복제거 하고 3) sort했다.
그러면서 for문 하나가 사라졌고, …문 속도는 아직 정확히 모르지만 for문을 날림으로써 O(n)의 속도 향상이 일어났다.
굳굳 ES6+ 를 사용함으로써 라인수도 3줄이 줄고, 속도도 O(n) 만큼 줄었다. 멋져
그리고 하나 더 나는 습관적으로 let으로 초기화하는데, 참조변수 타입은 내부 값이 바뀐다 하더라도 const로 해도 무방하다.
const로 선언해서 안정성을 높이는 방향으로 가자...