javascript54 JavaScript 알고리즘 (11) Binary Search 요즘 알고리즘 공부하는 맛을 알게 된 새발자🐣 처음에는 아무것도 모르고 듣기만 했는데, 2번 보고 3번 보니 이해가 가면서 재미가 있다. 오늘은 Searching Algorithm 의 두번째 방법인 Binary Search (2진 탐색) 을 공부해보았다. Linear search 가 1번부터 순서대로 검사하는 방식이었다면, Binary search 는 가운데에서 반으로 쪼개서 검사한다. (고구마 먹을 때 반으로 쪼개서 먹듯이) 핵심만 말하자면 배열을 반으로 쪼개서 둘중 하나를 계속 버리고 또 쪼개서 버리고 이런식으로 추려나간다. The algorithm is based on a well know domain divide and conquer technique. It repeatedly breaks dow.. 2022. 9. 25. JavaScript 알고리즘(10) Linear Search Linear Search 는 값을 찾을 때 순서대로 하나하나씩 다 검사하는 searching algorithm 이다. Linear Search is defined as a sequential search algorithm that starts at one end and goes through each element of a list until the desired element is found, 우리가 흔히 알고 있는 for문을 사용하여 하나하나씩 검사하는 방법을 사용한다. 이게 가장 기본적인 방식이고 이 알고리즘을 기준으로 여러 알고리즘들을 비교할 수 있을 것 같다. function linearSearch(arr, value) { for(var i = 0; i < arr.length; i++){ if(.. 2022. 9. 12. JavaScript 알고리즘(9) Recursive function 오늘 소개할 친구는 재귀함수이다. 알고리즘 공부하는 중 나온 친구이다. 근데 꽤 흥미로운 친구라서 소개 겸 공부겸 아무튼 참지못하고 포스팅을 올려본다. JavaScript 알고리즘(9) Recursive function 재귀함수는 자기자신 속에서 또 호출되는 함수를 의미한다. (마치 거울의 방에서 끝없이 내 자신이 보이는 느낌이랄까 ) 예시로 들 코드는 모든 숫자의 합과 곱을 구하는 공식이다. 맨처음 코드를 공부하면서 배웠던 함수이며, 실무에서도 은근히 많이 사용하는 추억이 담긴 함수인데, 이것을 재귀함수로 구현하며 밀려오는 감동이란 🤩 ** 반드시 base case 를 만들어놓아야만 한다. 그래야 무한루프의 굴레에 빠지지 않는다. 모든 수의 합 // regular way function sumRange.. 2022. 9. 6. JavaScript - 정규식 Regular expression updated 06/28/23 오늘은 정규식의 날이었다 정규식이 나를 애먹였지만 덕분에 생동감있게 배웠다. 아래 내용은 내가 편하게 이해하려고 정리해놓은 규칙들이다. 서서히 늘려나갈 계획이다. JavaScript - 정규식 Regular expression 💡 기본 규칙 / _____ / 일단 정규식은 요런 형식을 사용한다. 슬래시로 감싸진 형태이다. / _____ / g 전체 문자열을 몽땅 검색한다 / _____ / i 대소문자를 구분하지 않는다 / _____ / gi 전체 문자열 몽땅 검색 + 대소문자를 가리지 않는다 / ^[0-9] / 여기서 ^ 는 시작을 의미한다. → 한마디로 0-9 인 숫자로 시작되는 문자를 의미한다. / [^0-9] / 괄호 안의 ^ 는 not 을 의미한다. → 한마디로 0-.. 2022. 7. 29. JavaScript - scrollTop / scrollHeight / clientHeight 이란 (feat.최대스크롤 값) 스크롤 핸들링은 항상 숙제같은 녀석이었다. 몇번을 마주쳤지만 피하고 싶었던 녀석, 그래서 자세한 개념 아묻따하고 그때그때 해결하기 바빳는데, 결국 확실히 알고 넘어가야겠다는 생각이 들어 그동안 야금야금 쌓아왔던 포스팅을 방출하고자 한다. JavaScript - scrollTop / scrollHeight / clientHeight 이란 (feat.최대스크롤 값) 긴 게시글이 하나있다고 치고 설명하겠다. scrollTop 아래 참고 이미지에 보이는 것처럼, 원글 맨 처음부터 ~ 현재 화면에 보이는 부분까지의 길이가 scrollTop 이다. 글의 맨 처음 부터 얼마나 내려왔는지 현재 스크롤 위치 를 알수있다. An element's scrollTop value is a measurement of the di.. 2022. 7. 2. JavaScript 알고리즘(8) Multiple Pointers Pattern - isSubsequence 차근차근 시간날 때마다 알고리즘을 풀고 있다. 이번 하반기에는 좀더 집중해서 알고리즘을 공부할 생각이다.(선선포 후공부라 하자) Multiple Pointers 패턴에서 isSubsequence 문제이다. 먼저 풀면서 느낀점은 우선 멀티 포인터를 쓰는 부분이 익숙하지 않았고, 2중 루프를 쓰지 않는다는 것 그래서 O(N) 으로 성능을 좀 더 개선시키는 방향으로 풀어보았다는 부분이었다. 어려웠지만 풀고나면 항상 성장하는 기분이 들어 뿌듯하다 😁 JavaScript 알고리즘(8) Multiple Pointers Pattern - isSubsequence 쉽게 한방에 설명해보겠다. 함수의 첫번째 인자로 주어진 'sing' 문자열과 두번째 인자로 주어진 'sting' 문자열이 있다. 두번째 문자열 sting 안.. 2022. 6. 29. JavaScript - KeyDown / KeyPress / KeyUp 이벤트 메시지 입력창에서 엔터키로 메시지 전송을 할 때나 줄바꿈을 할 때 키보드 이벤트를 사용하게 된다. 대표적인 키보드 이벤트인 keyDown / keyPress / KeyUp 에 대해서 정확히 알고싶어서 공부해보았다. JavaScript - KeyDown / KeyPress / KeyUp 이벤트 keyDown 키보드를 누를 때 + 계속 누르고 있는 경우 실행 (아무 키나 다 반응) keyPress 키보드를 누를 때 + 계속 누르고 있는 경우 실행 (text 입력되는 키만 반응 - 방향키, 탭 같은 거 제외) keyUp 키보드를 눌렀다가 키에서 손을 뗄 때 실행 Key 이벤트 동작 순서 key event 사이의 동작 순서는 다음과 같다. keydown → keypress → keyup 하지만, 실제 글자가 입.. 2022. 6. 22. JavaScript - 배열에서 원하는 인덱스만 삭제하기 (Splice / Filter) 예전에 내장함수들 공부할때 기초는 기초일뿐 이라고 생각하였던 적이 있다. 하지만 실무에서 배열을 동적으로 삭제하는 경우에는 보통 인덱스를 많이 사용한다. 그래서 다시한번 가장 기초적인 배열 함수 splice 와 filter 을 한번 더 정리해보았다. 실제로 응용했던 코드가 궁금하시다면? (아래 포스팅 클릭 ↓↓↓) React(72) map()으로 input 추가 삭제하기 CRUD 를 그리다 보면 의 자유로운 추가 삭제 기능이 필요할 때가 있다. 비슷한 기능을 3번째 구현하면서, 잊지 않기 위해 기록으로 남겨본다. React(72) map()으로 input 추가 삭제하기 1. Input 입력값 devbirdfeet.tistory.com splice vs slice 기억이 가물가물하시다면...? (아래 기초.. 2022. 6. 8. JavaScript 알고리즘(7) Multiple Pointers Pattern - averagePair 차근차근 시간날 때마다 알고리즘을 풀고 있다. 이번에는 Multiple Pointers 패턴에서 평균구하기 문제이다. 실컷 고민하다 결국 지난번 패턴과 같은 공식을 적용했더니 별문제 없이 통과를 했기 때문에, 이번에는 다른 사람의 풀이를 가지고 와 분석해보았다. JavaScript 알고리즘(7) Multiple Pointers Pattern - averagePair 매개변수로는 array 와 average가 주어지고, array 를 검사해서 두 수를 더한 평균이 average 와 같으면, 통과! (true) 이고, 같은 average 가 없다면 false 이다. 나의 풀이 while 문으로 계속 조건이 맞을때까지 무한반복하도록 만들었다. if 문으로 (맨앞과 + 맨뒤 숫자 / 2) 로 만든 평균값으로 매.. 2022. 4. 26. 이전 1 2 3 4 5 6 다음 반응형