Computer Science

✒️ 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를 보내줄 지는 프런트와 약속하여 정하기 나름]?..
✒️ 0. 들어가기 전이전 포스팅에서 다루었던 내용에서 HTTP에 대한 심화된 내용을 조금 더 다뤄보겠다. [네트워크] HTTP 헤더(header)✒️ 0. 들어가기 전HTTP 요청/응답 과정에서 Header와 Body를 주고 받는다.이 중에서 헤더에 대해 알아보자. ✒️ 1. HTTP 헤더HTTP 헤더는 사용자가 HTTP 요청을 할 때 주고받는 중요한 정보다.헤더와jinhos-devlog.tistory.com  ✒️ 1. HTTP 프로토콜의 진화: HTTP/1.0부터 HTTP/3까지💡 HTTP/1.0: 초기 단계HTTP/1.0은 웹의 초기 단계에서 사용된 프로토콜이다. (완전 초기의 HTTP) 이 버전의 주요 특징은 다음과 같다:연결 수명이 짧다: 각 HTTP 요청마다 새로운 TCP 연결을 설정한다..