본문 바로가기

알고리즘(Algorithm)

(19)
[알고리즘] 알고리즘 알고리즘 알고리즘이란 어떤 입력을 받아 원하는 결과를 이끌어내는 과정을 기술한 것이다. 어떠한 문제가 주어졌을 때 이 문제를 해결하는 절차가 알고리즘이 되는 것이다. 알고리즘은 아래의 조건을 만족해야 한다. 입력 : 0개 이상의 입력이 존재해야 한다. 출력 : 1개 이상의 출력이 존재해야 한다. 명확성 : 각 명령어의 의미는 모호하지 않고 명확해야 한다. 유한성 : 유한한 단계를 거친 후 반드시 종료되어야 한다. 효율성 : 각 명령어들은 실행 가능한 연산이어야 한다. 시간 복잡도 시간 복잡도란 알고리즘의 실행 시간을 분석한 척도를 말한다. 시간 복잡도가 클 수록 알고리즘의 실행 시간이 길어진다는 뜻이다. 이 시간 복잡도는 실행에 필요한 연산의 수를 \(n\)으로 하는 함수 \(T(n)\)으로 나타낸다. ..
[자료구조] 큐 큐 자료의 입력과 출력이 FIFO(First In First Out)의 형태를 띄는 자료구조이다. LIFO의 스택과는 달리, 먼저 들어간 자료가 먼저 출력된다. 입력은 뒤(rear)에서, 출력은 앞(front)에서 일어난다. 줄을 서서 차례를 기다릴 때를 생각해보자. 앞에 있는 사람의 뒤에 줄을 서 차례를 기다리다가, 앞 사람이 빠져야 나의 차례가 되는 것과 같다. 큐에는 선형 큐와 원형 큐가 있다. 선형 큐는 구현하기는 쉽지만, front와 rear가 배열의 끝에 도달하게 된다면? 더 이상 사용할 수 없게 된다. 배열 앞부분에 값이 남는 데도! 이 방식을 해결하려면 요소들을 앞으로 당기거나 하는 번거로움이 필요하다. 이 문제를 해결한 것이 원형 큐이다. 원형 큐에서는 front는 항상 맨 앞 요소의 앞..
[자료구조] 스택 스택 자료의 입력과 출력이 LIFO(Last In First Out : 후입선출)의 형태를 띄는 자료 구조이다. 마지막으로 입력된 자료가 먼저 나오게 된다는 말이다. 스택에서는 맨 윗부분(top)에서만 입출력이 가능하고, 중간에서는 불가능하다. 책을 상자에 넣을 때 차곡차곡 쌓다가, 중간에 있는 책을 꺼낼 때는 위에서 부터 꺼낸다고 생각하면 된다. 아래는 스택의 연산들이다. init() : 스택을 초기화한다. is_empty() : 스택이 비어있는지 확인한다. is_full() : 스택이 가득 차 있는지 확인한다. size() : 스택에 저장된 요소들의 수를 반환한다. push(x) : x를 스택의 맨 윗부분에 추가한다. pop() : 스택의 맨 윗부분에 있는 요소를 삭제하고 반환한다. peek() : ..