240925 TIL - 우당탕탕 발표회

LIHA·2024년 9월 25일
0

내일배움캠프

목록 보기
60/117
post-thumbnail

알고리즘

순열조합 쓴다고 그렇게 애썼는데, 해답은 항상 간결하다

가끔 보면 나는 같은 문제를 얼마나 어렵게 풀 수 있는지 고민하는 느낌이다...

  • 어찌저찌 답은 맞췄던 내 코드는 아래와 같다. 순열로 추출한다고 생각했는데. 힝
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


발표회

생각보다 기획과 소통이 훨씬 중요하다

프리즈마 스키마라던지 기획에 대한 내용이라던지 소통이나 공유를 하는 것과 그렇지 않을 때의 차이가 크다. 실제로 컸다.

정섭튜터님의 성급환 정규화에 대한 조언

premature optimization

함부로 비정규화를 하거나 코드를 복잡하게 하면 안된다. 느린 것 같아서 최적화를 하면 안되고, 정말 실제로 느려야 한다. 구글에 페이지 로딩에 대한 기준이 200ms 정도로 정해져 있다. 이와 비교해보고 고심한 끝에 할것.
회사는 당신이 50ms를 10ms로 줄이는 시간에 기능 개발을 하나 더 했으면 한다.

시연 위주의 발표는 그다지 좋지 않다

우리 조만의 특별한 코드가 있다거나 우리조가 구현한 기능이 있다는 식으로 발표를 하는 것이 좋다. 듣는 사람도 지루하기도 하고, 기억에 남는 기능이나 코드가 없으면 리뷰하기 힘들기 때문.

Prisma 스키마 짤때 @map과 @@map에 대해서 알아보고 쓰자

ORM 편리하고 좋지만 이것도 공부가 필요하다

사실 ORM보다 로우쿼리 쓰는게 더 나을때도 있다.

자주 접근하는 메모리는 관계를 안 맺는게 낫다

DB에서 JOIN을 거는게 아니라 DB의 메모리에 올려놓고 쓰는 편이 더 좋다
ERD는 쓰기 편하려고 관계를 맺기 보다는 엔티티간의 관계를 생각해서 꼭 걸려야 하는 관계만 거는 것이 좋다

profile
갑자기 왜 춤춰?

0개의 댓글