Insertion sort (삽입 정렬) 삽입 정렬은 버블 정렬 및 선택 정렬과 꽤 비슷하다. 기초 sort 알고리즘으로 이 3가지가 묶임 몇 가지 주요 차이점이 있고, 사실상 삽입 정렬이 더 유리한 지점이 있다. 삽입 정렬이 잘 작동하는 상황이 존재한다는 소리 -> 거의 정렬된 데이터에 새로운 데이터가 들어올 때 상황 예시: 라이브 & 스트리밍 방식으로 들어온 데이터를 즉시 입력해야 하는 상황, 데이터가 들어와서 계속 재정렬하고 실행중인 정렬을 유지하여 최신 상태로 두어야 할 상황 2. 삽입 정렬의 동작 방식 이 정렬은 배열의 과반을 점차적으로 만들어 정렬을 구축하며, 과반은 항상 정렬되어 있다. 따라서 하나씩 이동하거나, 한 번에 가장 큰 요소를 찾거나 한 번에 가장 작은 요소를 찾는 대신 각 요소를..
Selection Sort (선택정렬) -버블 정렬과 비슷하지만, 큰 값을 배열 끝에 위치시키는 대신 작은 값을 한 번에 하나씩 위치에 배열한다. 버블 정렬과 마찬가지로 처음부터 끝까지 움직이지만, 실제 정렬된 데이터는 처음부터 누적되고 있다. 첫 요소와 모든 요소를 비교 후, 비교 대상 중 최솟값을 찾아 마지막 swap을 통해 첫 요소와 최소값인 요소의 자리를 바꾼다(만일 첫번째 요소가 비교를 전부 끝냈을 때 최솟값이라면 자리를 이동하지 않는다-> noSwap). 버블 정렬 만들기 tip 우선 최솟값을 담을 변수를 만들어준다. 최솟값의 초기값은 첫번째 요소의 값으로 설정할 수 있다. 저장하려는 변수 값은 최소값이 담긴 요소의 인덱스이다. 모든 단일 항복들에 대해 반복할 필요는 없다. 실제로 해야할 것은..
1. What is sorting? 간단히 설명하자면 정렬 알고리즘이란 컬렉션(e.g. 배열)의 항목을 재배열하는 과정을 의미한다. e.g.) 문자열을 하나 고른 후에 문자열 내의 각 문자를 정렬하는 것 정렬 알고리즘의 대표적인 종류들만해도 15가지가 넘는다. 인설션 소트(insertion), 퀵 소트(quick), 버블 소트(bubble), 머지 소트(merge), 힙 소트(heap), 기수 소트(radix sort) 셸 소트(shell)등등.. 여러가지 접근 방법이 존재한다. 2. 왜 배워야 할까? 정렬(sorting)이 프로그래밍에서 정말 흔하게 사용되기 때문이다. JS, 루비, 파이썬의 내장 정렬 메서드를 사용하고 있더라도, 거기에 어떤 알고리즘이 사용되는 지를 이해하는 것이 중요하다. 데이터를 ..
How do we search? 1. Linear Search(선형 검색) 가장 간단한 방법은 모든 개별 항목을 순서대로 살펴보면서 우리가 원하는 값인지 확인하는 것이다. 위의 방법은 linear Search(선형 검색)로 정렬되지 않은 값(데이터)을 일일이 체킹하는 방식을 말한다. JavaScript는 이 검색 방식(선형 검색)을 이미 구현해놓았다. *통상적으로 Linear Search가 기본 Search값이라 그냥 Search라고도 하는 거 같다. Linear Search == Search 선형 검색을 하는 내장 메소드 목록 indexOf //인자로 넘겨준 값이 배열에 있다면 해당 요소의 index 를 반환하고 아니라면 -1을 반환한다. includes // 값이 있다면 true 없다면 false 반..
1. helper mehtod recursion : 재귀적이지 않은 외부 함수가 재귀적인 내부 함수(inner function)을 호출하는 패턴이다. 헬퍼 함수 혹은 헬퍼 메소드 재귀라고 부른다. 메인 외부 함수를 개발자가 외부에서 호출한다. 이 외부 함수를 호출할 때 인자를 내부로 전달해 줄 수 있다. 그리고 이 외부 함수 내부에는 또 다른 내부 함수가 정의되어 있다. 내부함수는 호출되고 재귀적으로 자기자신을 호출한다. 문제 해결을 위한 하나의 접근법이다. 기본 예시 function outer(input) { // 배열이나 데이터 목록 같은 걸 컴파일해야 할 때 사용 // ? 예시로, 어느 배열에서 모든 홀수 값을 수집하는 것과 같은 작업 let outerScopedaVariable = []; func..
배열의 유사도 //for ... in 반복문: key 를 뽑을 때 주로 사용 (배열에 사용하기엔 의미가 없음) //for ... of 반복문: es6에 추가된 새로운 컬렉션 전용 반복 구문, iterable 객체의 value 반복문 function solution(s1, s2) { let answer = []; for (i of s1) { for (j of s2) { if (i === j) { answer.push(i); } } } return answer.length; } //내 답은 이중 for문을 사용하였는데 성능적으로 좋은 코드는 아니다. //그렇다면 가독성이라도 좋아야 하는데 내장 메서드를 활용하지 못한 점이 아쉽다. // 다른 사람 풀이 // 검색 키워드로 js "교집합"을 구하는 공식 같은 ..
//🍕백준문제 2588번 //fs모듈로 여러줄 입력값을 받아오는 법 //e.g.) let input = fs.readFileSync('text.txt','utf8').split('\n'); /* 입력 예제 472 385 */ /* 출력 예제 2360 3776 1416 181720 */ const fs = require('fs'); const data = fs.readFileSync('dev/stdin').toString().split('\n'); const [firstNum, secondNum] = data; const [a, b, c] = secondNum; let ac = firstNum * c; let ab = firstNum * b; let aa = firstNum * a; console.log(..
- Total
- Today
- Yesterday
- 원티드 3월 프론트엔드 챌린지
- 원티드 FE 프리온보딩 챌린지
- 프리렌더링확인법
- 항해99추천비추천
- 프리온보딩 프론트엔드 챌린지 3월
- Prittier
- tilde caret
- 타입스크립트 장점
- getServerSideProps
- float 레이아웃
- 틸드와 캐럿
- D 플래그
- reactAPI
- nvm 설치순서
- nvm경로 오류
- fs모듈 넥스트
- ~ ^
- 부트캠프항해
- getStaticPaths
- aspect-ratio
- 항해99프론트
- grid flex
- 타입스크립트 DT
- is()
- && 셸 명령어
- text input pattern
- 항해99프론트후기
- 형제 요소 선택자
- 원티드 프리온보딩 FE 챌린지
- 원티드 프리온보딩 프론트엔드 챌린지 3일차
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |