본문 바로가기
  • soldonii's devlog

알고리즘31

자바스크립트 정렬 알고리즘 4 : Insertion Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 앞서 배운 Bubble Sort, Selection Sort의 경우 사실 교육적 목적을 제외하면, 실무에서 사용할 일은 거의 없다고 한다. 그러나 Insertion Sort는 경우에 따라서 가장 빠른 속도를 낼 수 있기 때문에 정확히 알아둬야 한다. Insertion Sort(삽입 정렬)를 사용하는 상황은 아래 조건이 충족될 때이다. 아래 조건에서는 그 어떤 정렬 알고리즘보다 Insertion Sort가 가장 빠른 속.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 3 : Selection Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) const numbers = [99, 44, 6, 2, 1, 5, 63, 87, 283, 4, 0]; function selectionSort(array) { const length = array.length; for (let i = 0; i < length; i++) { let minIdx = i; let temp = array[i]; for (let k = i+1; k < length; k++) { if (arra.. 2019. 11. 4.
자바스크립트 정렬 알고리즘 2 : Bubble Sort *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) Bubble Sort, Insertion Sort, Selection Sort 이 세가지가 주요 정렬 알고리즘 중 가장 우선적으로 배울 정렬 알고리즘이다. Merge Sort와 Quick Sort는 앞선 세 개보다 조금 더 Advanced한, 복잡한 알고리즘이다. 뒤의 두 개는 앞선 세 개보다 더 효율적이다. Bubble Sort의 작동 방식을 보면, 가장 구현하기에 간단하기는 하지만 가장 비효율적인 정렬 알고리즘이다.. 2019. 11. 3.
자바스크립트 정렬 알고리즘 1 : 왜 정렬 알고리즘을 배워야 할까? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 정렬 알고리즘을 배워야 하는 이유 const letters = ['a', 'd', 'z', 'e', 'r', 'b']; const basket = [2, 65, 34, 2, 1, 7, 8]; basket.sort(); // [1, 2, 2, 34, 65, 7, 8] basket 배열에서 자바스크립트에 내장된 정렬 메소드를 사용할 경우, 우리가 원하는대로 정렬이 이루어지지 않는다. 왜 그럴까? 자바스크립트에 내장된.. 2019. 11. 3.
자바스크립트의 자료구조 2 : 해쉬 테이블(Hash Table) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 해쉬 테이블(Hash Table)? 앞선 글에서 배열에 대해서 살펴보았다면 이번에는 객체에 대해서 살펴보자. 객체는 Hash Table이라는 자료구조의 종류 중 하나이다. Hash Table은 Key와 Value가 쌍을 이룬 형태로 데이터가 저장되어 있는 자료구조형을 지칭한다. 사실 배열 내 데이터도 Key와 Value로 이루어져 있기는 하나, 배열에서는 Key가 오직 index, 즉 숫자만 가능한 것에 비해 H.. 2019. 10. 8.
자바스크립트의 자료구조 1 : 배열(Array) *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 자료구조 - 배열 배열은 대부분의 프로그래밍 언어에서, 가장 간단하고 가장 많이 쓰이는 자료구조형이다. 배열의 경우 자료들이 메모리 주소(선반)에 순서대로 차곡차곡 정렬되어 있기 때문에, 특정 데이터를 순차적으로 iterate해야 하는 경우 배열은 최상의 자료구조형이다. (참고로 알고리즘 문제 또는 면접에서 string은 배열로 간주해서 풀어도 무방하다.) const strings = ['a', 'b', 'c',.. 2019. 9. 26.
(1) 코딜리티 - binaryGap 코딜리티 첫번째 문제 : binaryGap BinaryGap coding task - Learn to Code - Codility Find longest sequence of zeros in binary representation of an integer. app.codility.com 1) 정수를 2진법으로 치환하고, 2) 2진법에서 1과 1사이의 거리가 가장 긴 구간을 찾아서 그 거리를 리턴하라는 문제. 알고리즘 문제를 푸는건 왜 이렇게 어려운건지 잘 모르겠다...ㅠㅠ 검색 안 해보고 내가 머리 끙끙 싸매서 풀어보려고 했는데, 2진법 변환부터 막혔다. 처음에 생각한 방법은, n을 2로 나눈 나머지를 임의의 배열에다가 담는 과정을 n / 2가 0이 될 때까지 반복하면, 임의의 배열에 0과 1로만 이루어.. 2019. 8. 29.
자바스크립트의 자료구조 *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 자료 구조? 알고리즘? 자료 구조란, 말 그대로 정보(자료)를 저장하는 형태를 의미한다. 알고리즘이란, 자료 구조의 정보를 사용하기 위한 일련의 과정을 의미한다. 각각의 자료 구조는 형태가 다르고, 따라서 각각의 장단점도 다르다. 예를 들어 옷장, 서랍, 파일철 모두 무언가를 담는다는 의미에서 모두 같은 container이지만, 각각의 용도와 장단점이 모두 다른 것과 유사하다. 자료 구조의 종류는 굉장히 많다. .. 2019. 8. 28.
자바스크립트에서 Big O(시간 복잡도)란? *Udemy의 "Master the Coding Interview : Data Structures + Algorithms" 강의에서 학습한 내용을 정리한 포스팅입니다. *https://soldonii.github.io에서 2019년 8월 19일(월)에 작성한 글을 티스토리로 옮겨온 포스팅입니다. *자바스크립트를 배우는 단계라 오류가 있을 수 있습니다. 틀린 내용은 댓글로 말씀해주시면 수정하겠습니다. 감사합니다. :) 1. 좋은 코드란? 좋은 코드의 조건은 크게 3가지이다. ① READABLE : 읽고 이해할 수 있는가 ② EFFICIENCY : 메모리를 효율적으로 사용하는가 ③ SCALABLE : input의 규모가 커져도 느려지지 않는가 Big O는 코드가 Scalable한 코드인지, 알고리즘을 수행할.. 2019. 8. 27.