알고리즘
-
데이터베이스 인덱스는 왜 'B-Tree'를 선택하였는가개발 블로깅/Server&DataBase 개념 2020. 10. 25. 13:17
데이터베이스의 탐색 성능을 좌우하는 인덱스. 인덱스는 데이터 저장, 수정, 삭제에 대한 성능을 희생시켜 탐색에 대한 성능을 대폭 상승하는 방식이라 볼 수 있다. DB의 인덱스는 B-tree 자료구조를 이용하여 테이블의 요소를 빠르게 탐색하도록 설계되어있다. 그러면 인덱스는 그 많은 자료구조 중에 왜 하필 'B-tree'를 사용하는 것일까? 참고로 해당 글에서는 데이터베이스의 인덱스가 무엇인지에 대해서는 다루지 않는다. 하지만 인덱스에 대해 잘 몰라도 이 글을 읽는 것에 큰 어려움이 없을 것이다. DB를 직접 다루는 개발자가 아니더라도 SW 성능에 관심이 많거나 자료구조, 알고리즘 공부를 하는 사람이라면 관심을 가지고 읽어볼 만한 글이 될 것 같다. 인덱스가 B-Tree를 이용하는 이유에 대해 알기 위해,..
-
[2019.04.18] Recursion 함수 작성 시 주의할 점!핵인싸 개발자의 길/코드스테이츠 Immersive Course 2019. 4. 18. 10:53
오늘 아침 toy문제를 풀다가 멘붕에 빠지게 한 코드가 있었다. # 문제의 코드 내용 (실제 toy문제의 코드가 아닌 예시임) 첫번째 코드 function test(count){ if(count > 5) return; console.log(count); test(count++); } test(0); 두번째 코드 function test(count){ if(count > 5) return; console.log(count); test(count + 1); } test(0); 위 두 코드는 test라는 함수에 count를 1씩 증가시키면서 recursion호출을 하다가, count가 5 이상이 되면 recursion을 끝내는 함수이다. 보다시피 두 코드의 차이는, 단지 함수 내 에서 test를 호출을 할 때..
-
[2019.04.18] Recase.ly 스프린트를 진행하며핵인싸 개발자의 길/코드스테이츠 Immersive Course 2019. 4. 18. 01:23
현재 React로 youtobe 화면을 만드는 스프린트를 진행하고 있다. # 작업한 Recase.ly 화면 youtube API와 연동해서, 검색창에 검색을 하면 검색 영상과 관련 영상들을 유튜브처럼 화면에 보여주는 작업이다. # 스프린트를 진행하며 감탄한 부분 '실시간 검색 방식' 요즘 넷플릭스 등 서비스의 검색방식은, 검색어를 입력 후 엔터 키나 버튼을 누르는 방식이 아닌, 검색어 입력이 끝나면 바로 검색 내용이 나오도록 하는 방식을 쓴다. 그럼 검색내용을 한 글자 한 글자 쓸 때마다 검색기능을 실행하고 화면에 보여주는 작업을 하게 되지 않나? 라고 생각을 했다. 그래서 처음에는 검색 키워드가, 설정한 글자 수 이상이 되면 그때 검색 기능이 실행이 되도록 하는 것이였다. 하지만 그렇게 되면, 해당 글..
-
[2019.03.13] 순차적으로 추가되는 연속 콜백함수 구현개발 블로깅 2019. 3. 13. 14:56
오늘 AMA시간에 클로저 관련된 문제를 더 풀어보고자, 클로저 관련 문제를 어디서 구할 수 있나 여쭤보니까, 엔지니어분께서 한 문제를 풀어보라고 제시해주었다. # 함수를 호출하는 방식과 해당 결과값1234567var call = recursive(); call(1); // 1call(1)(2); // 2call(1)(2)(3); // 6call(1)(2)(3)(4); // 10...cs # 처음에 이 문제를 접하고 생각이 들었던 문제풀이방식 한번씩 호출이 될 때마다 카운트를 증가를 시켜야한다. (콜백함수가 늘어나야하기때문에..)카운트만큼 return 값을 콜백함수로 넘겨줘야한다.반복적인 행위이므로 recursive하게 구현해야한다. # 해당 문제에 대한 알고리즘 구현 소스코드1234567891011121..