알고리즘 15

[알고리즘👽] js 최대 공약수 유클리드 호제법으로 구하기

해당 포스팅은 유클리드 호제법 알고리즘을 이용해서 자바스크립트 js코드로 최대 공약수를 구하는 알고리즘을 구현합니다. 최대공약수란? 일단 최대공약수란 무엇일까요? 초등학생때 배워서 아마 대충은 알고 있겠지만 다시 한 번 정리해봅시다! 8의 약수 : 1, 2, 4, 8 10의 약수 : 1, 2, 5, 10 8과 10의 공약수 : 1,2 8과 10의 최대공약수: 2 약수란 어떤 수를 나누어 떨어지게 하는 수입니다. 8의 약수는 1,2,4,8이고 10의 약수는 1,2,5,10입니다. 공약수는 두 수의 공통된 약수입니다. 8과 10의 공약수는 1, 2가됩니다. 그리고 최대공약수는 이 공약수 중에 가장 큰 갑입니다. 8과 10의 최대 공약수는 2가 됩니다. 우리가 초등학생때 배운 최대공약수를 구하는 방법은 두 가..

알고리즘 2022.10.13

[알고리즘👽] 20. 그래프

해당 포스팅은 알고리즘 그래프에 대해 다룹니다. 그래프의 용어, 정렬, 행렬, 리스트, 점과 선에 대한 내용입니다. 그래프 소개 목표 그래프가 무엇인지 설명한다. 여러 종류의 그래프를 비교하고 사용 예시를 확인한다. 인접 리스트를 활용해서 그래프를 코딩한다. BFS와 DFS를 사용해 그래프를 순회한다. 빅오애 대해 다룬다. 그래프란? 그래프는 유한하고 변할 수 있는 꼭지점이나 노드나 점들의 집합으로 구성된 데이터 구조이다. 이 꼭지점들의 집합에 순서가 없는 경우에는 무방향 그래프, 순서가 있는 경우에는 유방향 그래프라고 합니다. 그래프는 노드나 노드들의 연결을 모은 것입니다 (Node + Connections) 그래프 이용 그래프 사용처 Social Network Location / Mapping Rou..

알고리즘 2022.09.23

[알고리즘👽] 19. 해시 테이블

해시 테이블 소개 목표 해시 테이블에 대해 설명 해싱 알고리즘 정의 어떤 것이 좋은 해시 알고리즘을 만드는 지 해시 테이블에서 충돌이 일어나는 경우와 충돌이 무슨 의미인지 충돌을 해결하는 두 가지 방법 해시 테이블이란? 해시 테이블은 key-value 쌍을 이루어 저장한다. 배열과 비슷하나 테이블 키는 순서를 가지지 않는다. 배열과 달리 해시테이블은 값을 찾거나 추가하거나 제거하는데 매우 빠르다. 배워야 하는 이유? 거의 모든 언어는 해시 테이블 종류의 구조를 가진다. 그건 속도가 매우 빠르기 때문이다. 순서가 중요하다면 배열에 저장하면 되지만 대부분 데이터는 그럴 필요가 없다. 그런 경우 해시 맵이나 해시 테이블을 사용하면 된다. 해시 테이블에 대한 더 자세한 정보 해시테이블이 어떻게 작동하는 지 이해..

알고리즘 2022.09.22

[알고리즘👽] 18. 이진 힙

힙 (Heaps) 소개 힙은 트리의 일종입니다. 이 영상과 단원에서는 힙에 대해 배울 겁니다. 그렇지만 기본적으로 힙은 트리입니다. 힙도 종류가 많습니다. 우리가 집중해서 다룰 것은 이진 힙입니다. 목표 힙의 정의 최소 힙과 최대 힙 비교 둘 중 하나를 코딩해본다. 실생활에서 힙이 사용되는 예시와 힙을 사용해서 만들 수 있는 여러 데이터 구조 다루기 이진 힙이란 무엇인가? 이진 탐색트리와 매우 비슷하지만, 다른 규칙을 가지고 있다. 최대 이진 힙에서는 부모 노드가 항상 자식 노드보다 큰 값을 가진다. 최소 이진 힙에서는 부모 노드가 항상 자식보다 작은 값을 가진다. 최대 이진 힙 각각의 부모는 최대 두 개의 자식을 가진다. 최대 이진 힙에서는 부모 노드의 값이 언제나 더 큽니다. 최대 이진 힙에서는 부모..

알고리즘 2022.09.21

[알고리즘👽] 17. 트리 순회

트리 순회 소개 선형 리스트 같은 경우는 순서대로 가면 되지만 트리는 왼쪽 오른쪽 선택할 수 있는 상태가 많아서 다른 것보다 조금 어렵다. 트리를 순회하는 방식은 두 가지가 있다. 하나는 너비 우선(Breadth-first Search) 다른 하나는 깊이우선 (Depth-first Search)이다. 두 가지 모두 일반적으로 방향을 가리킨다. 상황에 따라 적절한 방법이 달라진다. 하지만 지금은 드리에 있는 각 요소를 모두 거쳐가는 방법이 여러 가지 있다는 사실만 기억하면 된다. 너비 우선 탐색 소개 여기서 왼쪽으로 가는지 오른쪽으로 가는지는 중요하지 않다. 더 중요한 건 수평으로 작업하고 있다는 점이다. 의사코드 큐를 만들어서 방문한 노드의 값을 변수에 저장한다. 루트를 가지고 그걸 큐에 넣는다. 큐에 ..

알고리즘 2022.09.20

[알고리즘👽] 16. 이진 검색 트리

해당 포스팅은 알고리즘 이진 검색 트리에 대해 다룹니다. Udemy JavsScript 알고리즘 & 자료구조 마스터 클래스를 공부하며 정리한 내용입니다. 트리 소개 트리는 연결 리스트보다는 약간 더 상위 단계이고 더 복잡하다. 목표 트리 정의 트리, 연결 리스트, 배열 비교 여러 가지 종류의 트리의 차이점 설명 이진 탐색 트리에 대해 사용되는 동작 코딩 트리란? 연결 리스트처럼 노드로 이루어진 데이터 구조이다. 해당 노드사이에 부모- 자신 관계가 존재한다. 리스트는 선형 구조(linear), 트리는 비선형 구조이다(nonlinear) 노드는 형제 관계의 노드를 가리킬 수 없다. 무조건 부모-자식만 가능하다. 출발 지점은 단 하나여야한다. 트리 용어 Root - 트리 노드의 가장 위 Child - 루트에서..

알고리즘 2022.09.20

[알고리즘👽] 15. 스택과 큐

해당 포스팅은 알고리즘 스택과 큐에 대해 다룹니다. Udemy JavsScript 알고리즘 & 자료구조 마스터 클래스를 공부하며 정리한 내용입니다. 스택(Stack) 소개 목표 스택의 정의 활용 사례 배우기 스택에 대한 명령들을 코딩 스택이란? 데이터 구조, 데이터의 모음 후입선출 원칙을 따르는 데이터의 모음 나중에 들어온 것이 먼저 나가는 것. 어떻게 사용하나요? 설거지를 할 경우 가장 최근에 사용한 그릇이 가장 위에 있을 것이다.그릇을 치우려면 가장 위에서부터 치워야 합니다. 스택의 시각화 사용하는 곳 함수 호출을 다루는 상황 Undo / Redo Routing(인터넷 방문기록) 배열로 스택 만들기 var stack1 = [] stack1.push("google") stack1.push("instag..

알고리즘 2022.09.19

[알고리즘👽] 14. 이중 연결 리스트

해당 포스팅은 알고리즘 이중 연결 리스트(Doubly Linked Lists)에 대해 다룹니다. Udemy JavsScript 알고리즘 & 자료구조 마스터 클래스를 공부하며 정리한 내용입니다. 이중 연결 리스트 소개 스포일러를 하자면, 우리가 할 일은 앞의 노드로 갈 수 있는 포인터를 하나 더하는 것 뿐이랍니다. 작은 차이 같지만 실제 코드를 작성할 때 많은 것이 바뀝니다. 💡 목표 이중 연결 리스트 작성 이중 연결 리스트와 단일 연결 리스트 비교 이중 연결 리스트에 기본 함수 추가 이중은 뭐가 다른가? 거의 단일 연결 리스트와 비슷하다. 다른 것은 포인터다. 뒤로 가는 포인터가 있다. 코드를 작성할 때 훨씬 더 복잡할 것이다. 단일 연결 리스트와 비교 More memory === More Flexibi..

알고리즘 2022.09.18

[알고리즘👽] 13. 단일 연결 리스트(2)

단일 연결 리스트 : get 메소드 소개 Get 인덱스 혹은 위치를 의미하는 숫자를 인자로 받아서 주어진 위치에 있는 노드를 반환하는 메소드입니다. 의사코드 인자로 index를 받는다. 인덱스가 음수이거나 혹은 리스트의 길이보다 같거나 클 경우 동작할 수 없습니다. 이 경우 null을 반환한다. loop를 통해 인덱스가 지정하는 위치에 이를 때까지 반복해서 이동한 다음 해당 인덱스 위치에 있는 노드를 반환한다. 솔루션 class Node{ constructor(val){ this.val = val; this.next = null; } } class SinglyLinkedList { constructor(){ this.head = null; this.tail = null; this.length = 0; }..

알고리즘 2022.09.17

[알고리즘👽] 13. 단일 연결 리스트(1)

해당 포스팅은 알고리즘 단일 연결 리스트(singly linked lists)에 대해 다룹니다. Udemy JavsScript 알고리즘 & 자료구조 마스터 클래스를 공부하며 정리한 내용입니다. 단일 연결 리스트 소개 💡 목표 단방향 연결 리스트 정의 내장 배열 구조와 비교하기 검색, 횡단, 제거, 등의 다수의 메소드 및 많은 기능을 추가하기 연결 리스트란? 머리, 꼬리, 길이로 속성으로 구성된 데이터 구조. 배열과 달리 데이터에 접근하기 위해 사용할 인덱스가 없다. 단방향 연결 리스트라는 용어는 각 노드가 다음 노드로. 오직 단일 방향으로만 연결되어있다는 사실에서 유래한다. Array와 비교하기 List 인덱스 X 단순히 “이것이 첫 노드입니다.”를 의미하는 변수인 헤드 포인터를 가짐 head와 tail..

알고리즘 2022.09.17