책이 쌓여있는 것이나 프링글스 통을 생각하자. 이것은 한쪽에서만 자료를 넣고 뺄 수 있다. 가장 최근에 넣은 것을 가장 먼저 빼낼 수 있다.int Top(): 스택의 가장 윗 데이터를 반환만약 스택이 비었다면 이 연산은 정의불가 상태int full(): 스택이 꽉 차
큐(queue) : 줄을 서는 것 : FIFO(First In First Out) 형식의 자료구조 표를 사러 일렬로 늘어선 사람들로 이루어진 줄을 말하기도 하며, 먼저 줄을 선 사람이 먼저 나갈 수 있는 상황 선형 큐와 원형 큐가 있다 선형 큐는 계속 데이터가 앞으
스택이나 큐보다는 유연하고 링크드 리스트보다는 덜 유연하다(중간에서 삽입 삭제는 불가능)원형 큐를 조금 수정해서 만들면 된다void push_front(): 정수를 덱의 앞에 넣는다void push_back(): 정수를 덱의 뒤에 넣는다int pop_front(): 덱
노드는 연결 리스트의 각 자료연결 리스트는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 데이터를 저장하는 자료구조제일 마지막 노드는 NULL 포인터장점: 길이가 가변적이다 (배열의 단점을 보완)단점: 원하는 노드나 데이터를 찾을 때 일일이 탐색해야된다, 메모리
: 제자리 정렬: 불안정 정렬: 시간 복잡도는 O(n^2)주어진 리스트 중에 최소값을 찾는다.그 값을 맨 앞에 위치한 값과 교체한다(패스(pass)).맨 처음 위치를 뺀 나머지 리스트를 같은 방법으로 교체한다.위키피디아에서 가져온 의사코드제자리 정렬(in-place s
: 제자리 정렬: 안정 정렬: 시간 복잡도는 평균 O(n^2)내 앞에 있는 것이 크면 바꾸고 (뒤로 밀어서 적절한 위치에 삽입)아니면 그대로제자리 정렬(in-place sort)이미 주어진 원소들을 옮긴 뒤 적절한 위치에 원소를 삽입하는 연산을 반복하는데, 이 과정에서
합병정렬/병합정렬 (Merge Sort) : 분할 정복 알고리즘 : 비교 정렬 : 안정 정렬 : 시간 복잡도는 O(n log2 n) 분할 정복 알고리즘(Divide and conquer algorithm) 그대로 해결할 수 없는 문제를 작은 문제로 분할하여 문제를 해
: 분할 정복 알고리즘: 비교 정렬: 불안정 정렬: 시간 복잡도는 평균 O(n log2 n)합병정렬과 같은 분할 정복 알고리즘pivot(피벗)이라는 원소를 지정해서 기준으로 사용피벗보다 작은 요소는 피벗의 왼쪽으로피벗보다 큰 요소는 피벗의 오른쪽으로이 상태로 피벗을 제
조건을 만족시키면서 모든 원판을 그 순서 그대로 다른 기둥으로 옮기는 게임https://www.acmicpc.net/problem/19141(1) - 1개1 32(1 + 2) - 3개1 31 23 23 (1 + 2 + 4) - 7개1 31 23 21 32 12
모든 경우의 수를 고려하는 알고리즘깊이우선탐색(Depth First Search, DFS)너비우선탐색(Breadth First Search, BFS)최선 우선 탐색(Best First Search/Heuristic Search)이 있다이 중에서 DFS를 이용해서 백트래