[바킹독의 실전 알고리즘] 0x08강 - 스택의 활용(수식의 괄호 쌍)
·
Computer Science/자료구조 | 알고리즘
시간 복잡도 배열로 구현 -> 최대 N번 중간에 있는 원소의 삭제 발생 => O(N^2) 연결리스트 -> O(N) => 스택으로 훨씬 간단하게 구현 문자열을 앞에서부터 읽어나갈 때, 닫는 괄호가 남아있는 괄호 중에서 가장 최근에 들어온 여는 괄호와 짝을 지어 없애버리는 명령이라고 생각해도 된다 문제 해결 방법 여는 괄호 나옴 -> 스택에 추가 닫는 괄호 나옴 스택이 비어 있음 -> 올바르지 X 괄호 쌍 스택의 top이 짝과 맞지 X 괄호 -> 올바르지 X 괄호 쌍 스택의 top이 짝이 맞는 괄호 -> pop 모든 과정을 끝낸 후 스택에 괄호 남아있음 -> 올바르지 X 괄호 쌍 / 남아있지 X -> 올바른 괄호 쌍
[바킹독의 실전 알고리즘] 0x07강 - 덱
·
Computer Science/자료구조 | 알고리즘
덱 Restricted Structure 양쪽 끝에서 삽입, 삭제 전부 가능한 자료구조 성질 원소 추가 / 제거 O(1) 제일 앞 / 뒤의 원소 확인 O(1) 제일 앞 / 뒤가 아닌 나머지 원소들의 확인 / 변경이 원칙적으로 불가능 STL deque에서 인덱스로 원소에 접근 가능 구현 배열(더 쉬움) 연결리스트 const int MX = 1000005; int dat[2*MX+1]; int head = MX, tail = MX; 원소를 담을 큰 배열 1개, 앞쪽, 뒤쪽을 가리킬 변수 2개 (= 큐) head: 가장 앞에 있는 원소의 인덱스 tail: 가장 뒤에 있는 원소의 인덱스 + 1 -> 초기값 0이 아닌 MX 큐: 앞(제거), 뒤(삽입) -> 배열 내에서 실제 큐에 들어간 원소들이 차지하는 공간이 ..
[바킹독의 실전 알고리즘] 0x06강 - 큐
·
Computer Science/자료구조 | 알고리즘
큐 한쪽 끝에서 원소를 넣고 반대쪽 끝에서 원소를 뺄 수 있는 자료구조 ex. 공항에서 입국소속 하는 줄 FIFO(First in First Out) 먼저 들어간 원소가 먼저 나옴 성질 원소의 추가 / 제거 O(1) 스택 - top: 원소가 추가되고 제거되는 곳/ 원소가 위 아래로 배치된 것 큐 - rear: 추가되는 곳(뒤쪽), front: 제거되는 곳(앞쪽) 제일 앞 / 뒤의 원소 확인 O(1) 제일 앞 / 뒤가 아닌 나머지 원소들의 확인 / 변경 원칙적으로 불가능 구현 배열(더 쉬움) 연결 리스트 const int MX = 1000005; int dat[MX]; int head = 0, tail = 0; head와 tail은 0번지에서 시작해 계속 증가 dat 배열에서 dat[head] ~ dat[..
[바킹독의 실전 알고리즘] 0x05강 - 스택
·
Computer Science/자료구조 | 알고리즘
스택 한쪽 끝에만 원소를 넣거나 뺄 수 있는 자료구조 Restricted Structure: 스택, 큐, 덱 ex. 프링글스 통, 엘리베이터 FILO(First In Last Out) 자료구조 먼저 들어간 원소가 나중에 나오는 구조 성질 원소의 추가 / 제거 O(1) 제일 상단의 원소 확인 O(1) 제일 상단이 아닌 나머지 원소들의 확인 / 변경이 원칙적으로 불가능 구현 시 배열 기반으로 구현 구현 배열(더 쉬움) 연결리스트 const int MX = 1000005; int dat[MX]; int pos = 0; 원소를 담은 큰 배열 1 개, 인덱스 저장할 변수 1개 {13, 21, 30}이 담겨있는 스택 나타내기 -> dat[0], dat[1], dat[2]에 각각 13, 21, 30, pos = 3 ..
[바킹독의 실전 알고리즘] 0x04강 - 연결리스트
·
Computer Science/자료구조 | 알고리즘
연결리스트 원소들을 저장할 때 그 다음 원소가 있는 위치를 포함하는 방식으로 저장하는 자료구조 ex. 메모장 성질 k번째 원소를 확인 / 변경 -> O(k) 필요 첫 번째부터 순차적으로 방문해야 함 (첫 번째 원소의 주소만 알고 있음) N개의 원소 -> 평균적으로 2/N 시간 => O(N) 임의의 위치에 원소 추가 / 임의 위치의 원소 제거 -> O(1) 다음 원소의 주소만 변경해주면 됨 (추가하고 싶은 위치의 주소를 알고 있는 경우) 원소들이 메모리 상에 연속 X -> Cache hit rate ↓ But, 할당 다소 쉬움 배열 vs. 연결리스트 -> 선형 자료구조 vs. 비선형 자료구조: 트리, 그래프, 해쉬 종류 단일 연결 리스트(Singly Linked List) 각 원소가 다음 원소의 주소를 들..
[바킹독의 실전 알고리즘] 0x03강 - 배열
·
Computer Science/자료구조 | 알고리즘
배열 메모리 상에 원소를 연속하게 배치한 자료구조 성질 O(1)에 k번째 원소를 확인 / 변경 가능 임의의 위치에 원소 추가 / 제거 O(N) 추가하는 위치가 끝에 가까울수록 시간 ↓ => 평균적으로 N/2개 밀어야 함 추가적으로 소모되는 메모리의 양(= overhead)가 거의 X Cache hit rate ↑ 캐시 적중률(Cache hit rate) = 적중횟수/ 총 접근횟수, 컴퓨터의 성능 나타내는 척도 메모리 상에 연속한 구간을 잡아야 해서 할당에 제약이 걸림 시간복잡도 O(1) 임의의 위치에 있는 원소 확인/ 변경 원소 끝에 추가 마지막 원소 제거 O(N) 임의의 위치에 원소 추가 / 임의의 위치의 원소 제거 void insert(int idx, int num, int arr[], int& le..
0123suh
'Computer Science' 카테고리의 글 목록 (4 Page)