CS

    연결 리스트(LinkedList)

    연결 리스트(LinkedList)

    연결 리스트 리스트는 데이터에 순서를 매겨놓은 자료구조이다. (단일)연결리스트는 리스트의 한 종류이다.여기서는 포인터를 이용해서 연결리스트를 만들어보겠다. 연결리스트는 위의 그림처럼 각 노드들이 연결되어있는 형태를 나타낸다.각 노드 안에는 데이터와 다음노드를 참조하는 포인터로 이루어져 있다.A, B, C 의 노드가 있다고 하면 첫번째 노드 안에는 A라는 데이터와 B를 참조하는 포인터가 있다.두번째 노드 안에는 B라는 데이터와 C를 참조하는 포인터가 있다.세번재 노드 안에는 C라는 데이터와 다음이 없으므로 참조하는 포인터는 없다. 여기서 첫번째 노드를 머리 노드, 마지막 노드를 꼬리 노드라고 한다. 연결리스트의 장점은 원하는 만큼의 노드를 동적으로 추가/삭제 할 수 있다.단점은 배열처럼 메모리공간에 정렬되..

    큐(queue)

    큐(queue)

    큐 스택과 같이 데이터를 임시 저장하는 자료구조이다. 하지만 스택과 반대로 가정 먼저 넣은 데이를 가장 먼저 꺼내는 선입선출(FIFO: First In First Out) 구조를 가진다.예: 놀이공원에서 보통 줄 서는 구조 큐에 데이터를 넣을 떄는 인큐(enqueue), 큐에서 데이터를 꺼낼 때는 디큐(dequeue) 함수를 정의 데이터를 직접 꺼내는 것이 아니라 두개의 포인터(front, rear) 를 사용해서 위치를 나타낸다. 코드 # 고정 길이 큐 구현하기 with 링 버퍼. # 기존의 리스트로 dequeue 구현 시 시간 복잡도가 O(n) 으로 상당히 비효율적이다. # 이를 해결하기 위해 링 버퍼를 사용. from typing import Any class FixedQueue: class Empt..

    스택(Stack)

    스택(Stack)

    스택 데이터를 임시 저장할 때 사용하는 자료구조, 데이터의 입력과 출력 순서는 후입선출(LIFO) 방식이다. 한 쪽 끝에서만 데이터를 넣거나 뺄 수 있는 선형구조로 되어있다.데이터를 넣을 때는 push, 데이터를 꺼낼 때는 pop을 사용한다. 파이썬에서는 보통 스택을 구현하지 않고 리스트로 만들고 append 해서 데이터를 넣거나 pop으로 데이터를 꺼낸다.아래의 코드는 스택을 클래스로 구현해본 것이다. 코드 class Stack: class Empty(Exception): """스택이 비어있을 때 pop 또는 peek 를 수행할 때 예외 처리""" print("야") pass class Full(Exception): """스택이 가득일 때 push 를 수행할 때 예외 처리""" pass def __in..

    SQL VS No SQL

    SQL VS No SQL

    📔SQL SQL은 관계형 데이터베이스에서 (RDBMS)에서 데이이터를 저장, 수정, 삭제 및 검색할 수 있는 언어입니다. 제목의 문제는 사실 Relational database 와 Non Relational database 의 차이를 말하는것입니다. 📔Relational database 관계형데이터베이스는 정해진 스키마에 따라 데이터를 정하는 엄격한 구조입니다. 이러한 스키마를 준수하지 않으면 레코드는 테이블에 추가될 수 없습니다. 또한 중복을 피하기 위해 데이터를 여러 테이블에 분산하고 관계를 통해 테이블을 연결합니다. 📗장점 정해진 스키마를 따라야하기 때문에 명확한 데이터 구조를 보장합니다. 또한 중복을 피해 메모리를 절약할 수 있습니다. 📕단점 시스템이 복잡할수록 쿼리문이 복잡해지고 그만큼 성능도 ..

    릴레이션 키

    릴레이션 키

    📔키 키는 검색이나 정렬 시 Tuple을 구분할 수 있는 기준이 되는 Attribute(속성)입니다. 후보키, 기본키, 대체키, 슈퍼키가 있습니다. 📔키의 종류 후보키 기본키 대체키 슈퍼키 먼저 후보키는 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합입니다. 기본키가 될 수 있는 후보들이죠. 이 후보키는 유일성과 최소성을 만족해야합니다. 유일성 최소성 유일성이란 키로 튜플을 오직 하나만 유일하게 식별할 수 있어햐 합니다. 최소성은 레코드를 구별하는데 반드시 필요한 속성으로만 구성해야 합니다. (학번과 주민번호는 후보키가 될 수 있지만 학번+주민번호의 조합은 후보키가 될 수 없습니다. 그 이유는 이미 학번이나 주민번호로 튜플을 식별할 수 있는데 굳이 사용할 필요가 없죠) 기본키는 앞에서 설명한 후..

    TCP/IP (Transmission Control Protocol / Internet Protocol)

    TCP/IP (Transmission Control Protocol / Internet Protocol)

    📔TCP/IP 란 TCP/IP는 패킷 통신 방식의 인터넷 프로토콜인 IP와 전송 조절 프로토콜인 TCP로 이루어져있습니다. 📔TCP/IP 역할 TCP는 데이터를 작은 단위의 패킷으로 분해하고 조립하며 오류를 잡는 역할을 합니다. IP는 목적지를 찾아 패킷을 최대한 빨리 전송하는 역할을 합니다. TCP는 데이터 전달을 관리 IP는 인터넷상의 주소 규칙 📔TCP/IP 동작 먼저 TCP가 데이터를 작은 조각(패킷 단위)로 나눕니다. 다음 IP는 이 조각들을 최대한 빠르게 목적지로 보냅니다. 조각들의 순서가 뒤바뀌거나 일부가 손실 또는 누락되더라도 신경쓰지 않고 보내는 것에 집중합니다. TCP는 이렇게 도착한 조각을 확인하여 순서를 맞추고 손실 또는 누락된 패킷을 다시 요청합니다. 📔TCP/IP 4계층 OSI ..