전체 글 42

[알고리즘👽] 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

[Git🔥] 명령어 모음 (add, commit, push, pull, status, log)

해당 포스팅은 git 명령어 모음으로 git add, git commit, git push, git pull, git status, git log에 대해 다룹니다. git의 상태 시작하기 앞서서 일단 git의 세가지 상태를 확인을 알아야 한다. Commited, 데이터가 로컬 데이터 베이스에 안전하게 저장된 상태 Modified, 수정한 파일이 아직 데이터베이스에 커밋하지 않은 상태 Staged, 수정한 파일을 곧 커밋할거라고 표시한 상태 git add git add 설명 Modified 상태의 파일을 Staged 상태로 만든다. 수정된 파일을 “곧 저장할게요~” 상태로 만든다. 바로 저장하는 것이 아니라 add 과정을 한 번 거쳐야 저장할 수 있다. 매번 저장하기 전에 add하는 것이 번거롭다고 생각할..

DevOps 2022.09.15

[알고리즘👽] 12. 자료구조

해당 포스팅은 알고리즘 자료구조에 대해 다룹니다. Udemy JavsScript 알고리즘 & 자료구조 마스터 클래스를 공부하며 정리한 내용입니다. 최고의 자료 구조는 무엇일까요? 어떤 공통적인 것들이 자료 구조임을 나타낼 수 있을까요? 배열, 객체등 모두가 공통적으로 가지고 있는 특징은 값(value)들의 모음이라는 것이다. 왜 이렇게 많을까요? 특정 유형의 문제는 특정한 자료 구조가 효율적이기 때문이다. 일부 자료 구조는 매우 특화되어 있다. 배열과 객체와 같이 자주 사용되고 있는 일부 자료 구조들은 매우 일반적이며, 이것이 바로 이들이 무료로 제공되는 이유이기도 하다. 그러나 RB(Red and Black) 트리, 비방향 그래프, 혹은 그와 유사한 자료 구조로 작업해야 할 경우에 이들 자료 구조가 보..

알고리즘 2022.09.15

[Git🔥] git init 초기화하기

해당 포스팅은 git init을 통해서 git 저장소를 생성하고 초기화 하는 방법까지 다룹니다. Git init이란? git init은 새로운 git 저장소를 생성하거나 기존 저장소를 초기화한다. git 저장소를 생성하지 않으면 git 명령어를 모두 사용할 수 없다. 그저 빈 폴더에 불과한 디렉토리를 깃 저장소로 만들기 위해서는 항상 git init 커맨드를 실행해야한다. 그래서 만약 git을 처음 배운다면 필수적으로 배워야 하는 명령어 중 하나이다. Git init의 형식 git init [-q | --quiet] [--bare] [--template=] [--separate-git-dir ] [--object-format=] [-b | --initial-branch=] [--shared[=]] [] ..

DevOps 2022.09.14

[Git🔥] Git과 Github의 차이점

해당 포스팅은 Git Github Gitlab의 차이점, git의 개념에 대해 다룹니다. 용어 사전 이름 뜻 Git 컴퓨터 파일의 변경사항을 추적하고 여러 명의 사용자들 간에 해당 파일들의 작업을 조율하기 위한 분산 버전 관리 시스템 이다. 버전 관리 동일한 정보에 대한 여러 버전을 관리하는 것을 말한다. 형상 관리 - 소프트웨어의 변경사항을 체계적으로 추적하고 통제하는 것으로, 형상 관리는 일반적인 단순 버전관리 기반의 소프트웨어 운용을 좀 더 포괄적인 학술 분야의 형태로 넓히는 근간을 이야기한다. - 형상 관리 안에 버전 관리의 개념도 포함되어 있다. 분산 버전 관리 소프트웨어 버전 관리를 위한 시스템이다. 이 시스템은 각 개발자가 중앙 서버에 접속하지 않은 상태에서도 코드 작업을 할 수 있는 것이 ..

DevOps 2022.09.14