[자료구조] 트리(Tree) 알아보기 (feat.이진 탐색 트리)
개발/DS&Algorithms
/ 2022. 4. 13.
안녕하세요 이번 게시글에서는 자료 구조 트리(Tree)에 대해서 알아보도록 하겠습니다. 트리(Tree) 트리(Tree)란, 노드들이 나무 가지처럼 연결된 비선형 계층형 자료구조입니다. 아래 그림과 같이 트리 자료구조는 나무를 뒤집은 모양과 유사합니다. 따라서 가장 위에 있는 노드를 Root(뿌리) 노드라고 합니다. 이러한 트리는 탐색(검색) 알고리즘 구현을 위해 많이 사용됩니다. 01. 트리의 종류 02. 알아둘 용어 Node : 트리에서 데이터를 저장하는 기본 요소 (노드에는 다른 연결된 노드에 대한 Branch 정보가 포함) Branch : 간선(edge)라고도 하며, 노드와 노드를 연결하는 선 Root Node : 트리에서 가장 위에 있는 노드 Level : 최상위 노드를 Level 0이라고 했을 ..
[자료구조] 해시(HASH) 알아보기
개발/DS&Algorithms
/ 2022. 4. 7.
안녕하세요!? 이번 게시글에서는 자료구조 중 해시에 대해서 정리하도록 하겠습니다. 해시는 저장 또는 검색 등에서 자주 활용되는 자료구조입니다. 정확하게는 특정한 함수(알고리즘)를 통해서 값을 추출하고 활용하는 것인데요. 함수(알고리즘)를 어떻게 구현하는지에 따라 사용 용도와 성능이 달라집니다. 이러한 해시는 더 나아가서 암호, 블록체인, 메시지 인증 코드 등에서도 활용됩니다. 해시(Hash) 해시(Hash)는 입력 데이터를 고정된 길이의 데이터로 변환된 값을 말합니다. 다른 말로는 '해시 값(Hash value), 해시 코드, 체크섬' 이라고도 합니다. 이러한 해시는 뒤에서 알아볼 '해시 함수'에 의해서 얻게 됩니다. 간단하게 말하자면, 데이터의 KEY 값이 해시 함수를 통해서 변환된 간단한 정수입니다...
[자료구조] 연결 리스트(Linked List) 알아보기
개발/DS&Algorithms
/ 2022. 4. 1.
이번 게시글에서는 연결 리스트에 대해서 알아보도록 하겠습니다. 또 다른 말로는 링크드 리스트라고도 합니다. 이러한 연결 리스트에는 단일 연결 리스트와 이중 연결 리스트로 두 가지 방식이 있는데요. 단일 연결 리스트의 단점을 보완하기 위해 이중 연결 리스트가 나왔다고 생각해도 좋습니다. 이제 자세하게 알아보도록 하겠습니다. 01. 단일 연결 리스트(Single Linked List) 링크드 리스트는 데이터들을 저장하기 위해 사용되는 자료구조입니다. 배열과 다르게 떨어진 곳에 존재하는 데이터를 화살표로 연결해서 관리하는 구조입니다. 그 중 단일 연결 리스트 또는 Single Linked List는 데이트들이 한쪽 방향으로만 연결되어 있습니다. 1) 기본 구조와 용어 노드 (Node) : 데이터 저장 단위(데..
[자료구조] 큐(Queue)와 스택(Stack) 알아보기
개발/DS&Algorithms
/ 2022. 3. 30.
이번 게시글에서는 큐와 스택에 대해서 알아보도록 하겠습니다. 01. 큐(Queue) 큐(Queue)는 자료 구조의 한 가지로, 먼저 집어넣은 데이터가 먼저 나오는 FIFO(First In, First Out) 구조로 저장하는 형식을 말합니다. 또 다르게 큐는 줄을 서는 행위와 유사하다고 할 수 있습니다. FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방식 1) Queue의 기능 Enqueue : 큐에 데이터를 넣는 기능 Dequeue : 큐에서 데이터를 꺼내는 기능 2) Queue의 메서드 메서드 설명 boolean add(Object o) 지정된 객체를 Queue에 추가 - 성공하면 true 반환 - 저장공간이 부족하면 IllegalStateExcepti..
[자료구조] 배열(array) 알아보기
개발/DS&Algorithms
/ 2022. 3. 28.
시작하기 전에 자료구조(Data Structure)는 대량의 데이터를 효율적으로 관리할 수 있는 데이터의 구조를 의미합니다. 어떤 데이터 구조를 사용하느냐에 따라 코드의 효율, 메모리 사용량 등이 달라집니다. 그렇기 때문에 데이터 특성에 따라 체계적으로 데이터를 구조화하고 이를 자료구조라고 하게 된 것입니다. 이러한 자료구조에는 대표적으로 [배열, 큐, 스택, 링크드 리스트, 해쉬 테이블, 힙] 등이 있습니다. 이번 게시글에서는 배열에 대해서 알아보도록 하겠습니다. 01. 배열(Array) 배열은 데이터를 나열하고, 각 데이터를 인덱스(Index)에 대응하도록 구성한 데이터 구조입니다. 배열의 자세한 내용은 아래 링크를 참고해주세요. https://kang-james.tistory.com/entry/%E..
[네트워크] HTTP 알아보기-개념
개발/CS
/ 2022. 3. 23.
안녕하세요. 이번 게시글은 HTTP에 대해서 포스팅하도록 하겠습니다. HTTP는 우리가 개발을 하면서 알아야할 중요한 개념입니다. 그 이유는 일상에서 웹과 애플리케이션 등 어디서든 HTTP를 접하기 때문인데요. 당장 웹 페이지의 상단을 보면, URL에 HTTP 또는 HTTPS가 적혀있는 것을 알 수 있습니다. 이렇듯 네트워크에서 데이터들을 교환하기 위해 HTTP(S)가 중요하게 사용되고 있습니다. 그렇다면 이러한 HTTP가 무엇일까요? 이제 개념과 어떻게 사용되는지 알아보도록 하겠습니다. HTTP(HyperText Transfer Protocol) # HTTP란? 웹은 기본적으로 HTML, URI, HTTP로 구성됩니다. 그 중 우리가 알아볼 HTTP는 HyperText Transfer Protocol의..