일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- primitive type
- sort
- Node js
- 버블정렬
- nodejs
- JavaScript Deep Dive
- 자바스크립트
- 정규표현식
- next/Image
- kakao map api
- 유데미
- 페이지네이션
- MUI
- Native select
- 재귀함수
- javascript
- 코딩테스트
- 코드스테이츠
- 자료구조
- 배열
- react js
- input class
- 백준
- 코드스테이츠 메인프로젝트
- 알고리즘
- 백준 nodeJS
- CSS
- OSI 7계층
- 이벤트 루프
- 프론트엔드
- Today
- Total
목록javascript/[Udemy] algorithm & data structure (17)
신입 개발자에서 시니어 개발자가 되기까지
1. 왜 정렬을 배워야 하는가? a. 정렬은 프로그래밍에서 매우 자주 쓰인다. 또한 많은 면접관련 책들은 정렬에 많은 시간을 할애할 만큼 중요하다. b. 같은 결과를 도출하는 수 많은 알고리즘이 있고, 각각 장단점이 있다. 상황에 따라 더 적합한 알고리즘이 존재한다.2. 기본적으로 내장된 자바스크립트 정렬 a. array.sort i. callback함수를 이용하여, 정렬방식을 정할 수 있다. 인자는 a 와 b 두개. ii. a-b값에 대해 함수가 음수를 반환하면 a가 b앞에 오는 것으로 결정한다. 양수면 반대로. (오름차순) iii. b - a로 설정하면, 내림차순이 된다.3. 버블정렬 a. 개념 : 오른차순으로 정렬할 때 더 큰 숫자가 한 번에 하나씩 뒤로 이동한다. b. 효율적인 정렬은 아니다. 그..

개념 및 특징 a. 정렬된 배열에서 원하는 요소를 찾는 효율적인 알고리즘. 배열을 절반으로 나누어 요소가 속한 그룹을 탐색하며, until you've narrowed down the possible locations to just one. (가능한 위치가 하나가 될 때까지 좁혀 나간다?? 요소가 속한 그룹의 length가 하나가 될 때까지 탐색한다는 의미인듯?) b. indexOf의 같은 경우 한 번에 하나의 요소만을 확인하는데, 이진검색은 한 번에 남아있는 배열의 절반을 없앨 수 있다. c. 예를들어 [1,2,3,4,5,6,7,8,9,10]에서 8을 찾으려고 한다면, indexOf의 작동 원리는 1부터 차례대로 하나씩 8과 비교한다. 이진검색의 경우에는 배열의 중간에 위치한 5 또는 6을 8과 비교한..
문제 Write a function called sameFrequency. Given two positive integers, find out if the two numbers have the same frequency of digits. Your solution MUST have the following complexities: (두 양의 정수를 인자로 받아서 각 수의 빈도가 같은 지 출력하라, 시간복잡도는 O(n)이어야 한다.) ex ) 12134, 12341은 true / 1234, 2234는 false 코드 function sameFrequency(num1, num2) { const obj = {}; for (let number of num1.toString()) { obj[number] = (o..
function countUniqueValues(array) { /* 의사코드 "정렬된 배열"을 전달받아 고유한 숫자가 몇 개 인지 카운팅하기. 1. index 0과 1에서 두 변수(i,j)를 이용해 loop문을 적용시킨다. 2. 이동 방향이 0에서 array.length 방향으로 같은 방향으로 움직인다. 3. j를 먼저 이동시키고 i랑 비교한 후 j가 더 크면 i를 한 칸 이동 시킨 후 4. i의 위치의 요소에 j에 위치한 요소의 값을 할당한다. 5. 이걸 반복한다. */ let i = 0; let j = 1; let newArr = array; //빈 배열일 경우 바로 0을 리턴하게 된다. while (j < array.length) { if (newArr[i] === newArr[j]) { j++;..
Anagrams 이란? - 하나의 문자를 재배열해서 만들어진 새로운 단어. 재배열된 문자는 원래 문자의 모든 글자를 사용해야 한다.문제 a. 두 문자열을 받아 character의 빈도수가 같은 지를 판단해서 boolean값을 반환하는 함수 만들기 § 예시문제를 풀면서 알게 된 점 a. string은 for in이 아니라 for of문을 사용해야 한다. for in 문을 사용하면 object의 key값으로 string의 index가 들어가게 됨. 내가 필요한 것은 string의 각 character 이므로 for of 문을 사용해야 한다.코드 function validAnagram(str1, str2) { if (str1.length !== str2.length) { return false; } const..
Frequency Counter(빈도 카운터) a. 배열 속의 요소들의 빈도를 세는 함수 작성하기(내가 쓴 코드) function same(array1, array2) { //array의 요소가 숫자 인지 아닌지 판별 //두 배열을 각각 object에 key / value로 입력 //object1의 key를 따로 배열로 만들기(순환시키기 위해서) //object1의 key값과 objeect2의 key제곱근의 값이 같은지 판별 //object1의 모든 key에 대해서 loop를 돌고, true인지 false인지 반환 const objectOfNumber = {}; for (key of array1) { objectOfNumber[key] = objectOfNumber[key] + 1 || 1; } cons..
며칠 간 미뤄왔던 알고리즘 블로깅을 해야겠다. one Note에는 따로 필기를 했는데, 강의의 저작권을 침해하지 않는 선에서 블로깅을 해야하니 수정하는 게 귀찮아서 미루고 있었다. 문제를 이해하기 a. 나만의 방식대로 문제를 생각할 수 있는가? b. 문제에 어떤 입력값이 들어가야 하나 c. 문제에 대한 해결책에서 나와야 하는 출력값은 무엇인가? d. 입력값에 따라 출력값이 나오는가? e. 이 문제에서 가장 중요한 것을 어떻게 분류할 것인가 예시를 생각하기 a. 예시를 떠올리는 것이 문제를 이해하는 데 도움을 준다. b. 해결책을 도출한 후 검증을 할 수 있다. break it down (세분화하기) : 의사코드를 써라 a. 예시 : 문자열을 받아서 문자열 내의 각 string과 number의 개수를 출력..
Big O of Objects (객체의 Big O) 객체는 정렬되지 않은 데이터 구조다. Key와 value가 함께 저장된다. 입력, 제거, 접근 모두 상수의 시간이 걸림. 매우 빠른 속도로 처리 된다. Insertion(입력) - O(1) Removal(제거) - O(1) Searching(탐색) - O(N) 탐색의 경우에는 선형의 시간이 걸린다. N이 클수록 오래 걸림. 탐색은 key에 접근 하는 것을 말하는 것이 아니라, 어떤 정보가 어디에 있는지 확인하는 것이다. 이 때 객체 내 모든 property에 접근해봐야 한다. Keys,values,entries 메서드는 모두 O(n)이다. Access(접근) - O(1) hasOwnProperty가 여기에 속한다. 객체 내에 해당 프로퍼티가 있는지 없는..