CS 29

IP(Internet Protocol)

1. IP의 정의IP(Internet Protocol)는 인터넷 계층(Layer 3)에 해당하며, 각 장치에 고유한 주소(IP 주소)를 부여하고, 목적지까지 데이터를 전달하는 역할을 수행하는 비연결형, 비신뢰성 프로토콜입니다.비연결형(Connectionless): 사전에 연결을 설정하지 않고, 각 패킷은 독립적으로 전송됩니다.비신뢰성(Unreliable): 전송 오류나 순서 보장은 하지 않으며, 이러한 기능은 TCP 등 상위 계층에서 보장합니다.2. IP의 등장 배경초기 컴퓨터 네트워크는 각각의 하드웨어와 운영체제에 따라 독자적인 프로토콜을 사용했습니다. IBM, DEC, Apple 등은 각기 다른 통신 방식을 개발하여 자사 제품 간에는 통신이 가능했지만, 이기종 장비 간에는 상호운용성이 없었습니다.이에..

CS/네트워크 2025.06.13

Array, Linked List

배열(Array)Array는 우리 말로 배열이라고 한다. 배열은 모든 요소를 순서대로 나열한 선형 데이터 구조이다. 배열은 모든 데이터를 메모리의 연속된 위치에 저장한다. 대체로 동일한 데이터 타입의 데이터만을 저장한다.  배열의 가장 큰 특징은, 배열의 첫 번째 요소의 메모리 위치를 안다면 나머지 요소의 위치를 상대적으로 알 수 있다는 것이다. 예를 들어, 어떤 배열의 시작 위치가 0x0010이고 4바이트의 정수형 데이터를 저장하고 있다면 이 배열의 3번째 요소는 0x0010 + 2 * 0x0004 = 0x0018에 있을 것이다.배열의 인덱스 배열에서 어떤 데이터가 있는 위치를 인덱스라고 한다. 인덱스는 0부터 시작한다. 즉, 배열의 첫번째 데이터의 인덱스는 0이다. 위의 예시에서 배열의 세번째 데이터..

CS/알고리즘 2025.02.26

DFS, BFS

DFS(깊이 우선 탐색)과 BFS(너비 우선 탐색)은 대표적인 그래프 탐색 알고리즘이다. 두 알고리즘은 이름 그대로 깊이와 너비를 기준으로 그래프의 모든 노드를 순회하며 원하는 값을 찾는다.  먼저 그래프가 무엇인지 알아보자. 그래프는 정점과 간선으로 이루어진 비선형적 데이터 구조이다. 그래프를 표현하는 방법은 두가지가 있다.인접 행렬 표현 인접 행렬은 그래프를 0과 1의 행렬로 표현하는 방식이다. 그래프에 n개의 정점이 있다면 n*n 행렬을 만든다. 그리고 정점 i에서 j로 가는 간선이 있는 경우 행렬의 (i, j) 요소를 1로 표시하고, 간선이 없는 경우 (i, j) 요소를 0으로 표시한다. 예를 들어 위의 그림에서 정점이 3개인 그래프를 3*3 크기의 행렬로 표현할 수 있다. 세 정점은 자기 자신을..

CS/알고리즘 2025.02.24

정렬 알고리즘

정렬은 주어진 배열이나 요소들을 요소에 대한 비교 연산자에 따라 재배열 하는 것을 말한다. 정렬 알고리즘은 문제의 복잡성을 줄이기 때문에 중요하다. 예를 들어,출력하려는 데이터가 수백개라면 어떤 식으로든 정리하는 편이 보기 좋다.데이터를 정렬하면 O(1)시간만에 k번째로 작은 항목과 k번째로 큰 항목을 알 수 있다.거대한 데이터셋에서 검색하는 것이 쉬워진다. 정렬된 데이터가 있다면 이진 탐색을 사용해 검색할 수 있다.데이터베이스를 정렬하면 쿼리 성능이 향상된다.데이터셋을 정렬하면 패턴, 추세 및 이상을 식별하는데 도움이 된다.정렬 알고리즘을 사용하면 다음과 같은 장점이 있다.데이터를 정리하여 정보를 더 쉽고 빠르게 검색하고 분석할 수 있다.많은 알고리즘이 정렬된 데이터셋에서 더 효율적으로 작동한다.정렬을..

CS/알고리즘 2025.02.19

Big-O

Big O 표기법은 알고리즘의 시간복잡도나 공간복잡도를 설명하는데 사용되는 도구이다. Big-O는 알고리즘의 시간복잡도의 상한을 표현하는 방법으로, 알고리즘의 최악의 상황을 분석한다. 입력 크기에 따라 알고리즘에 걸리는 시간의 상한을 O(f(n))으로 표기하는데, 여기서 f(n)은 알고리즘이 크기 n의 문제를 해결하기 위해 수행하는 연산의 수를 나타내는 함수이다. Big-O의 정의 두 함수 f(n)과 g(n)이 주어졌을 때, f(n) =n_0 에 대해 f(n)이 c>0 이고 n_0>=0 인 상수가 존재할 때 f(n)은 O(g(n)) 이라고 한다. 간단히 말해서, c와 n_0이 상수인 모든 n>=n_0 에 대해 f(n)이 c*g(n) 보다 더 빨리 증가하지 않으면 f(n)은 O(g(n)) 이다. 수학적으로..

CS/알고리즘 2025.02.17

Arrow Function

화살표 함수 기본 화살표 함수 기본 ko.javascript.info화살표 함수 다시 살펴보기 화살표 함수 다시 살펴보기 ko.javascript.info 화살표 함수는 함수 표현식보다 단순하고 간결하게 함수를 만들 수 있는 문법이다. let func = (arg1, arg2, ...argN) => expression 이렇게 코드를 작성하면 함수가 만들어진다. 아래 함수의 축약 버전이라고 할 수 있다.let func = function(arg1, arg2, ...argN) { return expression;};  화살표 함수는 인수가 하나밖에 없다면 인수를 감싸는 괄호를 생략할 수 있다. 인수가 하나도 없을 때는 괄호를 비워놓으면 된다. 아래 예시와 같이 함수를 동적으로 만들 수도 있다.let age..

CS 2025.02.14

async와 await

async와 await async와 await ko.javascript.info async와 await는 Promise를 좀 더 편하게 사용할 수 있는 문법이다. javascript.info에 이해하기 쉬운 튜토리얼이 있어 정리해본다.async 함수 async 키워드는 function 앞에 위치한다.async function f() { return 1;} function 앞에 async를 붙이면 해당 함수는 항상 Promise를 반환한다. Promise가 아닌 값을 반환하더라도 이행 상태의 Promise로 값을 감싸 이행된 Promise가 반환되도록 한다. 즉, async는 수식하는 function의 반환을 암시적으로 Promise로 변환한다.async function f() { return 1;}f..

CS 2025.02.12

javascript - hoisting

javascript의 호이스팅은 인터프리터가 코드를 실행하기 전에 함수, 변수, 클래스 또는 임포트 등 모든 선언문을 해당 범위의 맨 위로 끌어올리는 것처럼 보이는 현상을 말한다.  javascript의 parser는 코드가 실행되기 전에 범위 안에 있는 모든 변수들을 모아서 범위의 최상단에 선언한다. 그 대상은 말 그대로 모든 선언이다. 함수, 변수, 클래스 그리고 임포트가 포함된다. 변수의 호이스팅 변수는 var, let, const 중 어느 방식으로 선언되었든, 항상 호이스팅된다.console.log(v1, v2, v3);var v1 = 0;let v2 = 0;const v3 = 0; 이러한 코드가 있었다면, javascript Parser는 다음과 같이 호이스팅한다.var v1;let v2;con..

CS 2025.02.05

javascript - var, let, const

Var, Let, Const의 차이점은? Var, Let, Const의 차이점은?ES2015(ES6)에서 반짝이는 새로운 기능들이 많이 등장했습니다. 2020년이 된 지금, 많은 JavaScript 개발자들이 그 기능들을 사용하기 시작했을 것이며 또 익숙해졌을텐데요. 여전히 그 중 몇몇은 일부www.freecodecamp.org  var, let, const의 차이에 대해 잘 설명된 글이 있어서 가져와봤다.  javascript에서 변수를 선언하는 방법은 세가지가 있다. var, let, const인데, 원래 javascript에는 var밖에 없었다고 한다. ES2015(ES6)에서 let과 const가 도입되었다. var, let, const에는 각각 어떤 특징이 있고 어떤 차이점이 있는지 알아보자. ..

CS 2025.02.04

운영체제

운영체제는 컴퓨터의 하드웨어와 소프트웨어를 관리하는 소프트웨어다. 운영체제는 다양한 어플리케이션 간의 컴퓨터 리소스 공유와 모든 활동을 관리 및 제어하고, 프로세서 관리, 메모리 관리, 파일 관리 등 모든 기본 기능을 포함한다. 운영체제의 목적은 사용자가 편리하고 효율적으로 프로그램을 실행할 수 있는 환경을 제공하는 것이다. 운영체제는 컴퓨터 하드웨어와 소프트웨어를 관리하는 소프트웨어로, 하드웨어는 컴퓨터 시스템의 올바른 작동을 보장하고 사용자 프로그램이 시스템의 적절한 작동을 방해하지 못하도록 하는 적절한 메커니즘을 제공해야한다. 운영체제는 컴퓨터에서 항상 실행되는 프로그램(커널)이며, 나머지는 모두 응용 프로그램이다. 운영 체제는 다음과 같은 일을 한다.모든 컴퓨터 리소스를 제어한다.응용 프로그램을 ..

CS 2025.01.23