✒️ 0. 들어가기 전트리와 그래프는 비선형 자료구조의 대표적인 예시이다.이 글에서는 트리와 그래프의 기본 개념부터 시작해, 다양한 종류의 트리, 그래프의 표현 방법(인접행렬과 인접리스트)에 대해 다뤄보자. ✒️ 1. 그래프 이론의 기초 (Graph, Vertex, Edge, Weight)정점(Vertex)와 간선(Edge)으로 이루어진 집합을 그래프(Graph)라고 부른다.정점은 노드(Node)라고도 불리며, 특정 객체, 위치, 사람 등을 나타낼 수 있다.간선은 이 정점들을 잇는 선으로, 관계나 경로를 표현한다.- 노드/정점(Node, Vertex): 그래프를 구성하는 기본 단위로, 점 또는 노드로 표현된다.- 간선(Edge): 두 정점을 연결하는 선으로, 그래프 내의 관계나 경로를 나타낸다.- 가중치..
✒️ 0. 들어가기 전이번 글에서는 연결리스트, 스택, 큐와 같은 기본적인 자료구조에 대해 깊이 있게 탐구해보겠다.각 자료구조의 개념, 구조, 시간 복잡도, 그리고 실전 코드 예제까지 다루면서 그 원리를 이해하고, 어떻게 구현되고 사용하는지를 배워보자. ✒️ 1. 연결리스트(Linked List)연결리스트는 메모리에서 연속되지 않은 위치에 노드를 저장하며, 각 노드는 다음 노드로의 포인터를 가지고 있다.이는 배열과 같은 순차적인 자료구조와는 다르게, 삽입과 삭제가 빠르게 이루어질 수 있는 장점을 제공한다.노드는 데이터와 다음 노드를 가리키는 포인터로 구성되며, 이 포인터를 통해 노드들이 연결된다.각 노드는 next 또는 next, prev라는 포인터로 서로 연결된 선형적인 자료구조!! 연결리스트는 주로 ..
✒️ 0. 들어가기 전포인터는 C와 C++와 같은 저수준 프로그래밍 언어에서 메모리를 직접 다루는 강력한 도구이다.이 글에서는 C++ 언어로 포인터의 개념, 메모리와의 관계, 그리고 실제 사용에 살펴보자. ✒️ 1. 메모리와 주소컴퓨터의 메모리는 1바이트 크기의 셀들이 연속적으로 나열된 구조이다.각 셀은 고유한 주소를 가지며, 이 주소를 통해 메모리에 접근한다.예를 들어, 'int i;'라는 선언은 4바이트(일반적인 int 크기)의 메모리 영역을 예약한다.이때 변수 i의 주소는 이 4바이트 중 첫 번째 바이트의 주소를 가르킨다. 그럼 값이 아닌, 이 주소를 직접 출력해보려면 어떻게 해야할까?C++에서는 '&' 연산자를 사용하여 변수의 메모리 주소를 얻을 수 있다.int i = 0;cout * 0x0000..
✒️ 0. 들어가기 전정적 배열과 동적 배열에 대해 다뤄보자.메모리 관리와 성능의 균형에 관한 이야기이다. 일반적으로 "배열"이라고하면 정적 배열을 의미한다.그렇기에 보통 "동적 배열"은 명확히 "동적 배열"이라고 이야기한다. 배열은 프로그래밍에서 가장 기본적이면서도 강력한 자료구조 중 하나이다.앞서 말했듯 크게 정적 배열과 동적 배열로 나눌 수 있는데,이 두 가지 형태는 각각 고유한 특성과 용도를 가지고 있다. 이 글에서는 정적 배열과 동적 배열의 특징, 장단점, 그리고 실제 사용 사례를 깊이 있게 살펴보겠다 ✒️ 1. 정적 배열 (Static Array)정적 배열은 컴파일 시점에 크기가 결정되는 배열이다.C++에서는 주로 C 스타일의 배열 선언(int arr[10])이나 std::array를 사용하여..
✒️ 0. 들어가기 전시간복잡도와 공간복잡도는 알고리즘의 효율성을 측정하는 중요한 개념이다.시간복잡도는 알고리즘 실행 시간을, 공간복잡도는 필요한 메모리 공간을 나타낸다.또한 빅오 표기법은 이러한 복잡도를 간단하게 표현하는 방법이다.자료구조와 알고리즘에서 빠질 수 없는 복잡도(Complexity) ...단순히 개념적으로만 알아둬야 할 게 아니고, 코딩테스트를 볼 때에도 꼭 알아둬야 할 파트이다.너무 추상적인 복잡도는 항상 [런타임 에러]로 나를 괴롭혔다.. 뿐만 아니라 코딩을 할 때 가장 신경써야 할 "효율" "성능" 개선에 빠질 수 없는 내용이다. ✒️ 1. 복잡도(Complexity)란?알고리즘의 복잡도는 컴퓨터 과학에서 알고리즘의 성능을 평가하는 중요한 척도이다.복잡도는 주로 시간 복잡도와 공간 ..
✒️ 0. 들어가기 전다음 포스팅 이어서... [네트워크] 네트워크를 이루는 장치✒️ 0. 들어가기 전가장 기본적이고 기초적인 내용이다.컴퓨터 네트워크 수업을 듣고 기억에 남는 단어는 'OSI 7계층'..?....머리 속에 요상한 7가지 블럭 두개가 있고, U자로 데이터가 왔다 갔다jinhos-devlog.tistory.com ✒️ 1. 유선LAN - 전이중화 통신, CSMA/CD유선 LAN 기술의 핵심은 바로 '전이중화(full duplex) 통신'이다.양쪽에서 동시에 데이터를 주고받을 수 있는 방식이라고 보면 된다.동축케이블, 광케이블 등을 기반으로 만들어진 유선LAN을 이루는 이더넷은 IEEE802.3 프로토콜을 기반으로 전이중화 통신을 쓴다. 이 규칙은 이더넷 프레임의 구조, 케이블의 최대 전송량..
✒️ 0. 들어가기 전가장 기본적이고 기초적인 내용이다.컴퓨터 네트워크 수업을 듣고 기억에 남는 단어는 'OSI 7계층'..?....머리 속에 요상한 7가지 블럭 두개가 있고, U자로 데이터가 왔다 갔다 하는 흐름 정도만 기억에 남는다. 하지만... 서비스 기업의 단골 중에 단골 질문은 "서버 상에서 데이터가 어떻게 이동하는가?" 에 대한 내용이다.그러려면 머리 속에 네트워크를 이루는 장치와 그에 대한 이해가 명확히 들어있어야 한다.그래서 차근차근 알아보자. ✒️ 네트워크를 이루는 장치의 이해네트워크 기기는 각자의 역할에 따라 계층별로 나눌 수 있다.여기서 재미있는 점은 상위 계층을 처리하는 기기가 하위 계층도 처리할 수 있다는 거다.반대는 불가능하다.예를 들어, 애플리케이션 계층의 로드밸런서는 네트..
✒️ 0. 들어가기 전계속 포스팅에서 HTTP에 대한 깊게 알아보았다.이번에는 간단하게, HTTP 상태코드와 HTTP 메서드에 대해 짧게 알아보겠다. ✒️ 1. 많이 사용되는 HTTP 상태코드(status code)HTTP 상태코드는 서버가 클라이언트의 요청에 대한 처리 결과를 나타내는 3자리 숫자이다.사실, 아래 소개하는 상태 코드 말고도 정말 많은 상태코드가 있다.또한, 실제 HTTP 상태를 디테일하게 쪼개지 않고 프런트측과 약속하여 일부 포괄적으로 사용하거나역으로 좀 더 디테일하게 상태코드를 설정하여 에러메시지와 함께 바디에 보내기도 한다.혹은 성공 Status는 따로 구분하지 않고 200으로 통일하는 경우도 있다.[즉, 상황에 따라 어떤 Status를 보내줄 지는 프런트와 약속하여 정하기 나름]?..