가끔 보면 나는 같은 문제를 얼마나 어렵게 풀 수 있는지 고민하는 느낌이다...
function picktwonum(arr, select) {
const result = [];
let sum = [];
let realsum = [];
if (select === 1) return arr.map((el) => [el]);
arr.forEach((fixed, index, origin) => {
const rest = [...origin.slice(0, index), ...origin.slice(index+1)]
// 해당하는 fixed를 제외한 나머지 배열
const permutation = picktwonum(rest, select - 1);
// 나머지에 대해서 순열을 구한다.
const attached = permutation.map((el) => [fixed, ...el]);
// 돌아온 순열에 떼 놓은(fixed) 값 붙이기
result.push(...attached);
// 배열 spread syntax 로 모두다 push
});
for (let i = 0; i < result.length; i++){
for (let j = 0; j < 1; j++) {
sum[i] = result[i][j] + result[i][j+1]
}
const sumSet = new Set(sum);
realsum = [...sumSet].sort((a,b) => a-b);
}
return realsum;
}
function solution(numbers) {
var answer = [];
answer = picktwonum(numbers, 2)
return answer;
}
function getSum(arr) {
const temp = []
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
temp.push(arr[i] + arr[j])
}
}
const sum = [...new Set(temp)].sort((a,b) => a-b)
return sum;
}
function solution(numbers) {
var answer = [];
answer = getSum(numbers)
return answer;
}
길이 차이가 거의 두 배...
Node
프리즈마 스키마라던지 기획에 대한 내용이라던지 소통이나 공유를 하는 것과 그렇지 않을 때의 차이가 크다. 실제로 컸다.
함부로 비정규화를 하거나 코드를 복잡하게 하면 안된다. 느린 것 같아서 최적화를 하면 안되고, 정말 실제로 느려야 한다. 구글에 페이지 로딩에 대한 기준이 200ms 정도로 정해져 있다. 이와 비교해보고 고심한 끝에 할것.
회사는 당신이 50ms를 10ms로 줄이는 시간에 기능 개발을 하나 더 했으면 한다.
우리 조만의 특별한 코드가 있다거나 우리조가 구현한 기능이 있다는 식으로 발표를 하는 것이 좋다. 듣는 사람도 지루하기도 하고, 기억에 남는 기능이나 코드가 없으면 리뷰하기 힘들기 때문.
사실 ORM보다 로우쿼리 쓰는게 더 나을때도 있다.
DB에서 JOIN을 거는게 아니라 DB의 메모리에 올려놓고 쓰는 편이 더 좋다
ERD는 쓰기 편하려고 관계를 맺기 보다는 엔티티간의 관계를 생각해서 꼭 걸려야 하는 관계만 거는 것이 좋다