본문 바로가기

전체 글

(30)
[자료구조] Priority Queue ※ 2022년 1월 4일에 작성된 글입니다.🚦 Priority Queue우선순위를 가진 항목들을 저장하는 큐FIFO가 아니라 우선 순위가 높은 데이터가 먼저 나간다.Priority Queue의 연산insert우선순위 큐에 요소를 추가한다.delete우선순위 큐에서 가장 우선순위가 높은 요소를 삭제하고 이 요소를 반환한다.find우선순위가 가장 높은 요소를 반환한다.isEmpty우선순위 큐가 비어있는지 확인한다.Priority Queue의 구분최소 우선순위 큐최대 우선순위 큐Priority Queue의 응용 분야시뮬레이션 시스템네트워크 트래픽 제어운영 체제에서의 작업 스케쥴링Priority Queue의 구현 방법배열(array)연결리스트(linked list)힙(heap)구현 방법삽입삭제순서 없는 배열O..
[자료구조] Tree ※ 2022년 1월 2일에 작성된 글입니다.🌲 Tree계층적인 구조를 나타내는 자료구조Tree의 구성노드(node)트리를 구성하고 있는 각각의 요소루트(root)트리에서 최상위에 있는 노드서브트리(subtree)하나의 노드와 그 노드들의 자손들로 이루어진 트리단말 노드(terminal node)하위 노드가 없는 노드비단말 노드(internal node)적어도 하나의 하위 노드를 가지는 노드Tree의 용어레벨(level)트리의 각 층의 번호높이(height)트리의 최대 레벨차수(degree)노드가 가지고 있는 하위 노드의 개수Tree의 응용 분야계층적인 조직 표현파일 시스템인공지능에서의 결정 트리Binary Tree모든 노드가 2개의 서브 트리를 가지고 있는 트리서브 트리는 공집합일 수 있다.이진 트리의..
[자료구조] Queue ※ 2021년 12월 31일에 작성된 글입니다.🚥 Queue먼저 들어온 데이터가 먼저 나가는 자료구조FIFO(First-In First-Out, 선입선출)Queue의 구조0123456789 ABC      front  rear      * front         첫번째 요소 하나 앞의 인덱스         * rear         마지막 요소의 인덱스         Queue의 연산add= enQueue큐의 뒤에 요소를 추가 한다.remove= deQueue큐의 앞에 있는 요소를 반환한 다음 삭제한다.peekisEmptyQueue의 용도버퍼시뮬레이션BFSLinearQueue배열을 선형으로 사용하여 큐를 구현한다.0123456789 ABC      ⬇         0123456789ABC      ..
[자료구조] Stack ※ 2021년 12월 30일에 작성된 글입니다.📚 Stack쌓아놓은 더미Stack의 특징LIFO(Last-In First-Out, 후입선출)가장 최근에 들어온 데이터가 가장 먼저 나간다.Stack의 구조|||-|| || ||C||B||A|요소(element)A, B, C상단(top)C하단(bottom)AStack의 연산push스택 상단에 요소를 삽입한다.pop스택 상단 요소를 삭제하고 반환한다.empty스택이 비어있는지 확인한다.peek스택 상단 요소를 스택에서 삭제하지 않고 보기만 한다.Stack의 용도입력과 역순의 출력이 필요한 경우에디터에서 실행 취소(undo) 기능함수 호출에서 복귀 주소 기억웹 브라우저 방문 기록(뒤로 가기)수식의 괄호 검사후위 표기식 계산미로 찾기DFS
[자료구조] List ※ 2021년 12월 29일에 작성된 글입니다.📋 List순서를 가진 요소들의 모임Array vs List ArrayList물리적 순서와 논리적 순서일치일치하지 않아도 됨크기고정가변메모리 할당정적동적List의 연산add새로운 요소를 리스트의 끝, 처음, 중간에 추가한다.remove기존의 요소를 리스트의 임의의 위치에서 삭제한다.clear모든* 요소를 삭제한다.replace기존의 요소를 대치한다.contains리스트가 특정한 요소를 가지고 있는지 확인한다.get리스트의 특정 위치의 요소를 반환한다.size리스트 안의 요소의 개수를 센다.isEmpty리스트가 비었는지 확인한다.ArrayList= Dynamic Array0123456789ABCDE     1차원 배열에 요소들을 순서대로 저장구현이 간단삽입,..
아임포트 일반결제 연동하기 ※ 2021년 12월 21일에 작성된 글입니다.PG(Payment Gateway)?온라인 상에서 결제를 할 때 주로 신용카드를 이용한다. 그런데 카드사는 한 곳만 있는 것이 아니고, 각각의 카드사마다 API가 다를 것이기 때문에 모든 카드사와 직접 연동을 하는 것은 매우 비효율적이다.따라서 PG 사에서는 각 카드사와 직접 연동을 하고 하나의 API로 통합하여 가맹점에 제공해준다.오프라인에서는 VAN 사가 비슷한 역할을 한다.또한, 결제 수단이 신용카드뿐만 아니라, 실시간 계좌이체, 가상계좌, 휴대폰 소액결제 등이 있는데, 이 역시 PG사에서 한 번에 연동할 수 있도록 해준다.PG 연동 솔루션?여러 카드사와의 연동을 PG 사가 해결해줬지만, 아직 문제가 남아있다.신용카드로 직접 결제하는 경우도 있지만, 요..
[Python] 2차원 배열 선언하기 ※ 2021년 12월 19일에 작성된 글입니다.Python에서의 1차원 배열 선언Python에서 1차원 배열을 선언할 때는 다음과 같이 * 연산자를 이용해 간단하게 선언할 수 있다.rows = 10arr = [0] * rows[0, 0, 0, 0, 0, 0, 0, 0, 0, 0]같은 방식으로 2차원 배열 선언하지만, 2차원 배열을 같은 방식으로 선언하면 문제가 생긴다.rows = 10cols = 5arr = [[0] * cols] * rows[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0,..
DNS Recursive Query를 직접 해보자 ※ 2021년 11월 29일에 작성된 글입니다.Recursive Query호스트 이름을 IP 주소로 변환해주는 DNS는 계층적 구조를 가지고 있다.루트 네임 서버↓해당 TLD 네임 서버↓해당 도메인 네임 서버루트 네임 서버가 모든 도메인의 레코드를 가지고 모든 쿼리를 감당하기에는 너무 부담스럽기 때문에 하위 네임 서버가 레코드를 가지고, 상위 네임 서버는 하위 네임 서버의 주소를 반환한다.루트 네임 서버에서 시작해 상위 네임 서버에서 하위 네임 서버로 해당 도메인의 네임 서버까지(원하는 호스트 네임의 레코드가 나올 때까지) 재귀적으로 쿼리하는 것일반적인 상황에서의 DNS 쿼리DNS 서버 주소를 따로 건드리지 않았다면 기본적으로 사용하는 통신사의 DNS 서버로 지정이 되어있을 것이다.사용자는 일반적으로 루..