본문 바로가기

CS45

[자료구조] Swift로 구현하는 Queue (큐) 큐의 개념 큐는 아래의 그림과 같이 한 쪽 끝에서는 자료의 삽입 연산만 가능하고 반대쪽 끝에서는 삭제만 가능한 자료구조이다. 이러한 특성을 가리켜 선입선출(FIFO: First In First Out)이라고 한다. 대표적인 예로 마켓에서 계산을 위해 계산대 앞에서 줄을 서서 기다리고 있는 사람들을 떠올리면 된다. 가장 먼저 도착한 사람이 먼저 계산을 할 수 있고 마지막에 도착하는 사람은 제일 끝에서 자신의 차례를 기다린다. 큐에는 선형큐, 원형큐 그리고 우선순위 큐등 여러 종류가 있는데 여기서는 가장 기본적인 선형큐에 대해서 알아본다. 큐에서 사용되는 연산 큐에서 사용되는 연산의 종류는 다음과 같다. count : 큐에 들어있는 자료의 개수 isEmpty : 큐가 비어있는 지를 체크하기 위한 연산 enq.. 2022. 4. 28.
[자료구조] Swift로 구현하는 Linked List (연결 리스트) Linked List (연결 리스트)란? 링크드 리스트는 위의 그림과 같이 데이터를 순차적으로 저장하지 않고 각각 떨어진 공간에 존재하는 데이터를 연결해 놓은 자료구조를 말한다. 위의 그림의 사각형을 노드(Node)라고 하는데 노드는 자신의 데이터와 다음 노드를 연결하는 포인터로 구성되어 있다. Array와 Linked List 배열과 링크드 리스트는 서로 장단점이 명확하다. 먼저 배열을 살펴보자. 배열은 index를 사용하여 한 메모리 공간 안에 데이터를 순차적으로 저장한다. 사용자는 인덱스를 이용해서 원하는 위치에 있는 데이터를 바로 접근할 수 있다. 하지만 배열의 중간에 데이터를 삽입하거나 삭제할 경우 기존의 데이터를 이동시키는 작업이 필요하다. 그렇기 때문에 삽입과 삭제에 있어서 오버헤드가 발생할.. 2022. 4. 20.
[자료구조] Swift로 구현하는 Stack Stack이란? 스택은 리스트의 끝(즉, 스택의 맨 위)에서 자료의 삽입과 삭제가 이루어지는 자료구조이다. 가장 최근에 들어온 자료가 가장 먼저 나가게 되는 LIFO(Last In First Out) 형태를 띄고있다. 스택의 입출력은 맨 위(top)에서만 일어나기 때문에 스택의 중간에 데이터를 삽입하거나 삭제하는 것은 불가능하며 top을 중심으로 연산이 이루어진다. 스택에서 사용되는 연산은 다음과 같다. count : 스택에 들어있는 요소들의 개수 isEmpty : 스택이 비어있는 지를 체크 push : 스택에 새로운 요소를 삽입 pop : 스택의 top에 있는 요소를 삭제 top : 스택의 top에 있는 요소 조회 Stack의 기본 구조 struct Stack { // 스택의 요소들을 담아두는 배열 v.. 2022. 4. 17.
[DB] 트랜잭션 격리 수준(isolation level) 목차 1. 트랜잭션의 특성 ACID 트랜잭션을 성공적으로 처리하여 데이터베이스의 무결성과 일관성을 보장하기 위해서는 (1) 원자성 (Atomicity) (2) 일관성 (Consistency) (3) 격리성 (Isolation) (4) 지속성 (Durability) 의 4가지 특성을 만족해야 한다. 이중 격리성을 보장하기 위해서 모든 트랜잭션을 순차적으로 실행하면 동시성 처리 이슈가 발생한다. 반대로 동시성을 높이기 위해 여러 트랜잭션을 병렬처리하게 되면 데이터의 무결성이 깨질 수 있다. 따라서, 트랜잭션들을 병행 수행하면서 격리성을 보장하기 위해 ANSI 표준은 트랜잭션의 격리 수준을 4단계로 나누어 정의하고 있다. 2. 트랜잭션 격리 수준 트랜잭션의 격리 수준(isolation level)이란 동시에 .. 2022. 2. 8.
[DB - 데이터베이스 개론] Chapter 11. 보안과 권한 관리 목차 01. 보안 데이터베이스는 조직에서 허가한 사용자만 접근할 수 있도록 통제하여 보안을 유지하는 일이 무척 중요하다. 데이터베이스의 보안은 데이터를 보호하는 방법을 고려하는 측면에 따라 다양하게 구분할 수 있는데, 일반적으로 다음 세 가지 유형으로 구분된다. ① 물리적 환경에 대한 보안 - 자연 재해처럼 데이터베이스에 물리적으로 손신을 발생시키는 위험으로부터 데이터베이스를 보호해야 한다. ② 권한 관리를 통한 보안 - 접근이 허락된 사용자만 부여된 권한 내에서 데이터베이스를 사용할 수 있도록 한다. 계정이 발급된 사용자만 데이터베이스에 접근할 수 있도록 통제하고, 사용자별로 데이터베이스의 사용 범위와 수행 가능한 작업 내용을 제한할 수 있어야 한다. ③ 운영 관리를 통한 보안 - 데이터 무결성을 유지.. 2022. 2. 7.
[DB - 데이터베이스 개론] Chapter 09. 정규화 목차 01. 정규화의 개념과 이상 현상 1. 정규화의 개념 데이터베이스를 잘못 설계하면 불필요한 데이터 중복이 발생하여 릴레이션에 대한 데이터의 삽입·수정·삭제 연산을 수행할 때 부작용이 발생할 수 있다. 이러한 부작용을 이상(anomaly) 현상이라 한다. 이상 현상을 제거하면서 데이터베이스를 올바르게 설계해나가는 과정이 정규화다. 2. 이상 현상의 종류 이상 현상에는 아래와 같은 세 가지 종류가 존재한다. 삽입 이상(insertion anomaly) - 새 데이터를 삽입하기 위해 불필요한 데이터도 함께 삽입해야 하는 문제 갱신 이상(update anomaly) - 중복 튜플 중 일부만 변경하여 데이터가 불일치하게 되는 모순의 문제 삭제 이상(deletion anomaly) - 튜플을 삭제하면 꼭 필.. 2022. 2. 5.