본문 바로가기
기록/멋쟁이사자처럼 FE 스쿨

[멋사 FE 스쿨] 33일차 리뷰

by ahj 2021. 12. 15.

멋쟁이사자처럼 프론트엔드스쿨 w/ 제주코딩베이스캠프 33일차


오전(09:00~11:50) 수업 w/ Licat

morning break

  • 면접 질문들에 관하여
    → 각자가 면접 때 받은 질문들에 대해서 모아서 보면 좋지 않을까
  • 구체적인 숫자들로 자신을 어필하라
    ex) 하루에 1000줄 이상 쓰는 개발자, 1일 1커밋
  • 열정보다는 시스템
  • 진흙 속에 진주 같은 우리들!!

수업

  • 어제 fullData에 관한 설명
  • 하나의 언어만 하지 않을 확률이 굉장히 높다

정렬

  • 선택정렬 → array에서 min을 찾아서 새로운 array에 넣어주기 원래 array에서 for문 돈다
  • 삽입정렬 → 기존 array에서 순차적으로 값을 꺼내서 새로운 array에 있는 값들을 for문 돌아 비교하고 삽입한다

병합정렬(Merge Sort)

  • 여기부터 정렬 핵심
    divide and conquer 분할 정복 다른 알고리즘에서도 사용한다.
  • 2개씩 합치는 과정에서 한쪽이 비어있으면 다른 합칠 것은 당연히 정렬되어 있기 때문에 경우의 수가 확 준다 merge sort는 그래서 worst case에도 좋은 perfomance를 보장을 해준다.
  • 플젝과 알고리즘의 우선순위?
    → 당연히 플젝
  • 유행을 타지 않는 지식

퀵정렬(Quick Sort)

  • Worst, Best가 다르다.
  • 실무에서 쓸 일? → 없을 확률 높다
  • pivot을 어떻게 잡는지는 상황마다 다르다.
  • 최악을 고려하면 pivot을 2개 잡기도 한다.
  • 값이 하나로 될 때까지 재귀로 호출
  • pivot값을 잡아서 하는 문제가 있다? Quick Sort 복붙해서 쓰는 것
  • 우리의 목표는 코테 통과
  • 좋은 프로그래머가 되려면 알고리즘을 결국 한 번 해야하긴 한다.
  • 코테볼 때는 sort method 쓰고 sort 쓸 수 없는 문제가 나온다면 merge 등을 구현해야지
  • 우리 코테의 목표는 절반!!
  • 집요하게 끝까지 물고 늘어져보자...!!

오후(13:00~18:00) 수업 w/ Licat

수업

  • 대표님도 알고리즘 짤 때 과거 찍었던 강의를 보면서 복기하신다고..ㅋㅋ
    즉, 정리해놓을 때 잘 정리해두고 과거의 내가 학습한 기록을 따라가자
  • 당장 이해가 안된다면 얻어가야할 것
    • 병합정렬이라는 것이 있다.
    • 병합정렬의 원리
    • 분할과 정복
  • 이렇게 어려운 경우 똑같은 코드를 메모장에 복사를 20개 정도 해서 아주 큰 배열을 큰 종이에다가 써가면서 이해를 해보기
  • 병합정렬 구현 문제가 코테 5문제 있다면 4~5번 정도의 문제
function mergeSort(arr) {
    let arrLength = arr.length;
    let arrReturn = [];
    if (arr.length <= 1) {
        return arr;
    }
    let median = parseInt(arrLength / 2);
    let groupOne = mergeSort(arr.slice(0, median);
    let groupTwo = mergeSort(arr.slice(median));
  • 계속 얘기하지만 코테는 기준을 넘는 것이 목표!!
  • 교육비용이 너무 큰 알고리즘 등은 어느정도 Cut하면서 가는 게 좋다.

퀵정렬(Quick Sort)

  • pivot - 기준
  • 알고리즘만 코딩의 전부라고 생각하지 말자
  • 코테 안보는 회사 들어가서 코테 준비한 다음에 이직하기를 권고한다!!
  • concat 같은거 쓸 때만 봐도 JavaScript 뭔가 안예쁘다..ㅋㅋ
  • Quick Sort나 Merge Sort를 사용해야하는 경우 Code Snippet에서 복붙해서 수정해가면서 쓰는 것!
  • 라인 인턴 면접 때도 화이트 보드에 Quick이나 Merge 같은거 손코딩으로 구현해보라고 했었다는 지인이..!

페이지 교체 알고리즘

  • 누구를 빼낼 거냐
  • LRU가 제일 많이 나온다고
  • 면접 질문으로 정렬에 대해 물어본다면 어떻게 답변할 것인가?
    → 머지소트란 분할 정복 알고리즘의 하나로써, 하나의 배열 등을 1개 이하의 원소가 남을 때까지 분할한 후 분할한 것들을 새로운 배열에 작은 것부터 넣어주면서 합치는 과정을 통해 정렬을 해주는 방식입니다.
  • 캐시의 크기를 의자처럼 생각
["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["Jeju"] 1회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["Jeju", "Pangyo"] 2회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["Jeju", "Pangyo", "Seoul"] 3회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["Pangyo", "Seoul", "NewYork"] 4회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["Seoul", "NewYork", "LA"] 5회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["NewYork", "LA", "Seoul"] 6회차

["Jeju", "Pangyo", "Seoul", "NewYork", "LA", "Seoul", "LA"]
["NewYork", "Seoul", "LA"] 7회차

hit - 1
miss - 5

트리

  • 포화이진트리, 완전이진트리
  • 포화이진트리는 완전이진트리의 일부
  • 전위순회, 중위순회, 후위순회
  • BFS, DFS
  • DFS는 Stack을 이용
    current에 있던 node가 방문 경로에 담기는 순간 자식 node들이 stack에 담긴다
  • BFS는 Queue를 이용
    current에 있던 node가 방문 경로에 담기는 순간 자식 node들이 queue에 담긴다

막간 NHN 컨퍼런스 추천https://www.youtube.com/watch?v=HoqMPUkzMSA&list=PL42XJKPNDepZC5HXlqxzTTJ_Ai_KDcXRa&index=12

댓글