Computer/자료구조, 알고리즘(10)
-
자료구조2(큐, 덱)
큐 큐는 한쪽 끝을 rear로 정하여 삽입 작업만 이루어지고 반대쪽 끝은 front로 정해 삭제 작업만 이루어진다. - 순차 자료구조 초기 상태 : front = rear = -1 , 공백 상태 : front = rear , 포화 상태 : rear = n-1 deQueue(Q) front rear++; Q->queue[Q->rear] = item; } element deQueue(QueueType *Q){ Q->front++; return Q->queue[Q->front]; } 더보기 Queue에서 deQueue를 할때 배열에 있는 요소를 삭제하는 것이 아니라 front위치만 변해서 Queue[4];인 경우 E는 삽입할 수 없는 개념을 모르고 구현하려고 해서 매우 헷갈렸다. - 파이썬으로 구현 from ..
2024.01.04 -
이진 트리
트리 이진 트리는 모든 노드가 자식이 2개 이하로 구성되어 있다. 노드는 이중 연결 리스트 구조로 만들 수 있다. 이진 탐색 트리 typedef struct{ char word[20]; char mean[200];}element;typedef struct treeNode{ element key; struct treeNode* left; struct treeNode* right;}treeNode;treeNode* searchDic(treeNode* root, element key){ treeNode* p; int compare; p = root; while(p != NULL){ compare = strcmp(key.word, p->key.word..
2023.12.01 -
정렬
정렬(Sorting)이란 데이터를 특정한 기준에 따라서 순서대로 나열하는 것 정렬 알고리즘은 이진 탐색의 전처리 과정 선택 정렬, 삽입 정렬, 퀵 정렬, 계수 정렬, 파이썬에서 제공하는 기본 정렬 라이브러리 (reverse 함수는 O(N)의 복잡도로 수행할 수 있으므로 내림차순 정렬은 오름차순 정렬을 수행한 뒤에 뒤집으면 된다.) 파이썬의 정렬 라이브러리 파이썬은 기본 정렬 라이브러리인 sorted() 함수를 제공한다. (딕셔너리 자료형 등을 입력받고 반환되는 결과는 리스트이다.) 병합 정렬을 기반으로 만들어졌고 시간 복잡도는 O(NlogN) 리스트 객체의 내장 함수인 sort() - 리스트가 반환되지 않고 내부 원소가 바로 정렬된다 array = [('banana', 2), ('apple', 5), (..
2023.09.15 -
구현 유형(완전 탐색, 시뮬레이션)
코딩 테스트에서 구현이란 '머릿속에 있는 알고리즘을 소스코드로 바꾸는 과정' 구현 문제 유형은 모든 범위의 코딩 테스트 문제 유형을 포함하는 개념이다. 코딩 테스트에서는 구현이 중심이 되는 문제가 자주 출제된다. 구현 유형(완전 탐색, 시뮬레이션)의 문제는 '풀이를 떠올리는 것은 쉽지만 소스코드로 옮기기 어려운 문제' 완전 탐색 유형 - 모든 경우의 수를 다 계산하는 해결 방법 시뮬레이션 유형 - 문제에서 제시한 알고리즘을 한 단계씩 차례대로 직접 수행 상하좌우 n = int(input()) x, y = 1, 1 d = input().split() dd = ['L','R','U','D'] dx = [0, 0, -1, 1] # 오른쪽이면 x좌표가 움직일 것 같음 dy = [-1, 1, 0, 0] for p..
2023.09.12 -
그래프
그래프의 정의 그래프 - 정점과 간선으로 이루어진 자료구조 두 노드가 간선으로 연결되어 있으면 '인접하다'라고 표현한다. 그래프는 꼭 연결되어 있을 필요도 없고, 또 두 정점 사이의 간선이 반드시 1개 이하일 필요도, 또 간선이 반드시 서로 다른 두 정점을 연결해야 할 필요도 없다. 루프(loop) - 한 정점에서 시작해 같은 정점으로 들어오는 간선 그래프의 차수(Degree) - 각 정점에 대해서 간선으로 연결된 이웃한 정점의 개수 순환 그래프(Cyclic graph) : 그래프 안에 사이클이 하나라도 있다. 비순환 그래프(Acyclic graph) : 사이클이 하나도 없다. 완전 그래프(Complete Graph) : 모든 서로 다른 두 정점 쌍이 간선으로 연결된 그래프 연결 그래프(Connected..
2023.06.14 -
탐색(search)
순차 검색(sequential search)리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법(리스트 자료형에서 특정한 값을 가지는 원소의 개수를 세는 count() 메서드를 이용할 때도 내부에서는 순차 탐색이 수행된다.) 색인 순차 검색(index sequential search)색인순차 검색은 데이터가 정렬되어 있다는 가정하에 하는 것이다. 이진 검색(binary search) - '찾으려는 데이터와 중간점 위치에 있는 데이터를 반복적으로 비교'이미 정렬된 데이터를 제외하면서(시작점 끝점을 중간점으로 옮겨서) 탐색(시작과 끝점의 중간점인 값과 타겟 비교하여)정렬된 배열의 중앙에 있는 값을 조사하여 찾고자 하는 항목이 왼쪽 또는 오른쪽 부분 배열에 있는지를 알..
2023.06.02