on
[멋사 FE 스쿨] 33일차 리뷰
[멋사 FE 스쿨] 33일차 리뷰
멋쟁이사자처럼 프론트엔드스쿨 w/ 제주코딩베이스캠프 33일차
오전(09:00~11:50) 수업 w/ Licat
morning break
면접 질문들에 관하여
→ 각자가 면접 때 받은 질문들에 대해서 모아서 보면 좋지 않을까
→ 각자가 면접 때 받은 질문들에 대해서 모아서 보면 좋지 않을까 구체적인 숫자들로 자신을 어필하라
ex) 하루에 1000줄 이상 쓰는 개발자, 1일 1커밋
ex) 하루에 1000줄 이상 쓰는 개발자, 1일 1커밋 열정보다는 시스템
진흙 속에 진주 같은 우리들!!
수업
어제 fullData에 관한 설명
하나의 언어만 하지 않을 확률이 굉장히 높다
정렬
선택정렬 → array에서 min을 찾아서 새로운 array에 넣어주기 원래 array에서 for문 돈다
삽입정렬 → 기존 array에서 순차적으로 값을 꺼내서 새로운 array에 있는 값들을 for문 돌아 비교하고 삽입한다
병합정렬(Merge Sort)
여기부터 정렬 핵심
divide and conquer 분할 정복 다른 알고리즘에서도 사용한다.
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개 이하의 원소가 남을 때까지 분할한 후 분할한 것들을 새로운 배열에 작은 것부터 넣어주면서 합치는 과정을 통해 정렬을 해주는 방식입니다.
→ 머지소트란 분할 정복 알고리즘의 하나로써, 하나의 배열 등을 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에 담긴다
current에 있던 node가 방문 경로에 담기는 순간 자식 node들이 stack에 담긴다 BFS는 Queue를 이용
current에 있던 node가 방문 경로에 담기는 순간 자식 node들이 queue에 담긴다
막간 NHN 컨퍼런스 추천https://www.youtube.com/watch?v=HoqMPUkzMSA&list;=PL42XJKPNDepZC5HXlqxzTTJ_Ai_KDcXRa&index;=12
from http://devahj.tistory.com/144 by ccl(A) rewrite - 2021-12-15 23:27:52