[알고리즘] 알고리즘 Algorithm
·
CS/자료구조 & 알고리즘
1. 알고리즘문제 해결을 위한 명확한 절차나 규칙의 결합알 쾨리즈미의 이름에서 유래컴퓨터가 작업을 자동화하고 효율적으로 수행하도록 지시시간 복잡도, 공간 복잡도(메모리 사용량) 등의 척도로 성능 평가 2. 알고리즘의 특징유한성: 반드시 종료되어야 함명확성: 각 단계가 명확히 정의되어 일관적인 결론이 도출되어야 함입력과 출력: 최소 1개의 입력과 출력이 필요함효과성: 간 단계는 기본적인 연산으로 수행 가능해야 함 3. 시간 복잡도O(1): 상수 시간입력 크기에 상관없이 일정 시간이 소요됨배열에서 특정 인덱스를 조호하는 작업이 이에 해당가장 효율적인 시간 복잡도로, 입력 크기와 무관해 빠른 실행 시간을 보장O(log n): 로그 시간입력 크기가 증가할 수록 시간이 느리게 증가이진 탐색 알고리즘이 이에 해당대..
[자료구조] PHP로 무방향 그래프 구현
·
CS/자료구조 & 알고리즘
인접 리스트로 무방향 그래프 구현class Graph { /** * @var array 인접 리스트를 저장할 연관 배열 * 예: ['A' => ['B', 'C'], 'B' => ['A']] */ private array $adjacencyList = []; /** * 그래프에 새로운 정점(Vertex)을 추가 * @param string $vertex * @return void */ public function addVertex(string $vertex): void { if (!isset($this->adjacencyList[$vertex])) { $this->adjacencyList[$vertex]..
[자료구조] 그래프 Graph
·
CS/자료구조 & 알고리즘
1. 그래프 Graph노드와 간선으로 이루어져 있음. 그래프에서는 순환이 가능함.정점은 서로 연결할 수 있는 출발점이 된고 간선은 정점을 이어준다.간선은 방향이나 가중치 같은 추가적인 정보를 가질 수 있음.소셜 네트워크나 길찾기, 네비게이션에서 주로 사용함. 2. 그래프 종류무방향 그래프양쪽이 모두 연결된 그래프유방향 그래프방향이 정해져 있는 그래프, 화살표로 방향 표시.가중치 그래프간선에 값이 부여된 그래프. 거리나 비용, 시간 등을 표현함.순환 그래프순환이 있어 처음 지점으로 돌아올 수 있는 그래프비순환 그래프한번 지나가면 되돌아오지 않는 그래프, 한 방향으로만 이동 3. 그래프의 표현인접 행렬(Adjacency Matrix)두 정점이 연결되어 있으면 1, 연결되어 있지 않거나 본인이면 0탐색이 빠르..
[자료구조] PHP로 이진 트리 구현
·
CS/자료구조 & 알고리즘
1. 이진 트리의 표현배열로 표현루트 노드의 인덱스를 0으로 하고 왼쪽 자식은 부모 노드의 인덱스 i에 대해 2*i+1, 오른쪽 노드는 부모 노드 인덱스 i에 대해 2*i+2배열 항목 사이에 빈칸이 발생하지 않는 포화 이진트리나 완전 이진 트리에 가장 적합위의 두 트리가 아닌 경우 메모리 낭비가 발생할 수 있고 배열의 크기에 따라 트리의 높이가 제한 될 수 있음연결 리스트로 표현각 노드당 두 개의 링크릴 가져 오른쪽 자식 노드와 왼쪽 자식 노드를 가리키도록 함필요한 만큼만 메모리를 사용할 수 있고 트리 구조를 시작적으로 표현 가능, 삭제와 삽입이 빈번한 이진 트리에 적합포인터를 사용해야 하므로 구현이 까다롭고 탐색 속도는 배열로 표현하는 것보다 느릴 수 있음 2. 연결 리스트로 표현TreeNode이진 트..
[자료구조] 트리 Tree(종류, 순회)
·
CS/자료구조 & 알고리즘
1. 트리 Tree 노드와 간선으로 이루어진 비선형적 구조사이클이 없음 -> 한 노드에서 출발해 다른 노드를 거쳐 다시 그 출발점으로 돌아오는 경로가 없음시작점인 루트 노드에서 모든 모든 노드에 도달할 수 있음더이상 자식이 없는 노드는 리프(leaf) 노드라고 함 2. 트리 종류일반 트리(General Tree)각 노드가 자식 노드를 몇 개나 가질 수 있는 지에 대한 제한이 없음이진 트리(Binary Tree)각 노드가 최대 두 개의 자식을 가지는 트리. 자식 노드가 왼쪽 노드와 오른쪽 노드로 구분됨 3. 이진 트리 종류포화 이진 트리(Full Binary Tree)리프 노드를 제외한 모든 노드가 자식 노드를 2개씩 가진 트리트리의 깊이를 통해 노드의 수를 계산 할 수 있음(깊이가 3이라면, 2^3-1..
[네트워크] SMTP와 POP3 프로토콜
·
CS/네트워크
1. SMTP와 POP3이메일을 주고 받을 때 사용하는 프로토콜. 송신자가 사용하는 프로토콜은 SMTP, 수신자가 사용하는 프로토콜은 POP3이다. 2. 송신자 → 송신자 메일서버 (SMTP)송신자가 이메일을 작성해 전송하면, 이메일 클라이언트(MUA: Mail User Agent)는 SMTP 프로토콜을 사용해 송신자 메일서버(MTA: Mail Transfer Agent)와 TCP 연결(보통 25번 포트)을 설정연결이 성립되면 일련의 SMTP 명령을 통해 송신자 주소, 수신자 주소, 메일 제목 및 본문 등 메일 전체 내용을 송신자 메일서버로 전송전송이 완료되면 QUIT 명령으로 연결을 종료 3. 송신자 메일서버 → 수신자 메일서버 (SMTP)송신자 메일서버는 수신자의 이메일 주소에서 도메인 부분을 확인한..
[네트워크] DHCP 서버
·
CS/네트워크
1. DHCP(Dynamic Host Configuration Protocol) 서버IP 주소를 자동으로 관리하기 위해 등장네트워크에 연결된 사용자(클라이언트)들에게 IP 주소를 자동으로 할당하고, 사용이 끝난 IP 주소를 회수하여 효율적으로 관리하는 역할 2. DHCP IP 할당 방식DHCP를 통한 IP 주소 할당은 주로 임대(Lease) 개념을 기반으로 하며, 다음과 같은 4단계 과정을 거친다. 이 과정은 각 단계의 앞글자를 따서 ‘DORA’(Discover, Offer, Request, Acknowledgement)라고도 부른다.DHCP Discover: 클라이언트가 네트워크에 접속하면, 자신에게 IP 주소를 할당해 줄 DHCP 서버를 찾기 위해 브로드캐스트로 Discover 메시지를 전송한다.DH..
[네트워크] DNS 서버
·
CS/네트워크
1. DNS(Domain Name System) 서버사용자가 입력한 도메인 이름(예: http://www.example.com)을 컴퓨터가 실제로 통신할 수 있는 IP 주소(예: 93.184.216.34)로 변환해주는 역할인터넷의 ‘전화번호부’와 같은 역할을 하여 사람이 기억하기 쉬운 도메인 이름과 컴퓨터가 이해하는 IP 주소 사이를 연결해준다. 2. DNS 동작 방식사용자가 웹 브라우저에 도메인 주소를 입력하면, 브라우저와 운영체제, 그리고 네트워크 상의 여러 DNS 서버들이 협력하여 해당 도메인에 대한 IP 주소를 찾아낸다.브라우저 캐시 → 운영체제 캐시 → 로컬(리졸버) DNS 서버 → 루트 DNS 서버 → TLD(Top-Level Domain) DNS 서버 → 권한(Authoritative) DN..
[네트워크] HTTP 프로토콜
·
CS/네트워크
1. HTTP(HyperText Transfor Protocol) 프로토콜사용자가 URL을 입력하는 행위를 요청(request)라고 하고, 서버는 사용자의 요청에 응답(response)한다.요청과 응답을 위해 HTTP 프로토콜을 사용한다.HTTP 프로토콜은 서버가 어떻게 데이터를 교환할지 정해놓은 규칙으로 80번 포트를 사용한다.문자 형태로 전송되기 때문에 필요한 부분을 파싱(어떤 페이지에서 내가 원하는 데이터를 특정 패턴이나 순서로 추출하여 정보를 가공하는 것)해주어야 한다. 2. HTTP 구조시작 라인헤더(header)공백(1줄)바디(body) - html헤더: 클라이언트와 서버가 통신하기 위한 부가적인 정보호스트: 서버의 도메인 이름과 포트 번호연결: 현재 작업이 끝난 이후에도 네트워크를 연결 상태..