자료구조 5

자료구조 _ Hash table

Hash table은 무엇인가요? 해시테이블은 효율적인 탐색(빠른 탐색)을 위한 자료구조로 키-값 쌍의 데이터를 입력받습니다. hash function h에 key값을 입력으로 넣어 h(k)를 위치로 지정하여 키-값 쌍을 저장합니다. 저장, 삭제, 검색의 시간복잡도는 모두 O(1)입니다. 좀 더 자세히 알아볼까요~ Direct-address Table을 먼저 알아봅시다. 직접 주소화 테이블이란? 키를 인덱스로 설정하여 저장하는 방식입니다. 직접 주소화 테이블의 단점은 키에 따라 빈공간이 생기고 공간을 낭비하게 됩니다. 또한 인덱스에 다양한 자료형의 키를 저장할 수 없습니다. 이러한 단점들을 보완하기 위해 해시 테이블을 사용합니다. 해시 테이블 해시 테이블은 hash function h를 이용, (키, 값..

자료구조 _ Queue 그리고 Stack

Queue는 무엇인가요? 큐는 줄 형태의 선입선출 자료구조입니다. 활용예시는 프린트 출력, 은행창구 번호표 대기, 너비우선탐색(BFS) 등이 있습니다. enqueue : 데이터 추가 dequeue : 데이터 추출 시간복잡도는 둘 다 O(1)입니다. array-based queue vs list-based queue array-based queue : 배열 기반 큐는 선입선출 과정에서 남는 메모리가 생깁니다. 이는 circular queue로 해결할 수 있습니다. *circular queue는 배열이 끝까지 차면 첫부분에 비어있는 공간으로 다시 채우기 시작하는 것을 뜻합니다. 만약 공간이 없어서 채울 수 없게 되면 dynamic array와 같은 방법으로 array의 크기를 늘려야 합니다. list-bas..

[자료구조] 스택과 큐 Python 코드로 구현해보았다.

스택과 큐 'Stack'은 나중에 들어온 것을 먼저 내보내는 후입선출을 뜻한다. 'Queue'는 먼저 들어온 것을 먼저 내보내는 선입선출을 뜻한다. 이를 파이썬 코드로 구현하자면 다음과 같다. 스택 top - 스택의 가장 윗부분 (꼭대기) bottom - 스택의 가장 아랫부분 (바닥) push(item) - 데이터를 넣는 작업 pop() - 데이터를 꺼내는 작업 peek() - 스택의 가장 위에 있는 항목 조회 stack_list = [] for i in range(5): stack_list.append(i) print(f"stack_push :: {stack_list}") for _ in range(5): stack_list.pop() print(f"stack_pop :: {stack_list}") 0..

선형배열

배열이란? 배열이란 연관된 데이터를 하나의 변수에 그룹핑해서 관리하기 위한 방법 리스트 길이과 관계 없이 빠르게 실행 결과를 보게되는 연산들 요소 마지막에 추가 .append('삽입할 요소') 요소 마지막 혹은 지정된 인덱스에서 꺼내기 .pop('꺼낼 인덱스') 리스트의 길이에 비례해서 실행 시간이 걸리는 연산들 요소 삽입하기 '리스트명'.insert('인덱스', '삽입할 요소') 요소 삭제하기 del('리스트명['인덱스']') 리스트의 길이에 실행 시간이 비례. 오래걸리는 이유는? 리스트의 중간이 수정되어 전체 인덱스가 변경되기 때문. 추가 다른 연산 요소 탐색하기: '리스트명'.index('찾을 요소') 실습1. 리스트 L 에 정수 x를 숫자 크기에 알맞게 넣는 코드 def solution(L, x)..

정렬(sort)과 탐색(search)

정렬(sort) 복수의 요소로 주어진 데이터를 정해진 기준에 따라 새로 늘어놓는 작업 파이썬 내장 함수 sorted('리스트명') sorted('리스트명', reverse=True) 리스트에 쓸 수 있는 메서드 '리스트명'.sort() '리스트명'.sort(reverse=True) 특이점 sorted 함수는 원본에 영향을 미치지 않지만 sort 매서드는 원본에 수정을 가한다. 함수와 메소드의 차이점 함수는 독립적으로 정의되므로 이름으로만 호출이 가능하지만 메서드는 정의된 클래스에 종속되므로 ‘.’에 의해 호출해야한다. 함수가 메소드보다 더 포괄적인 의미를 가진다. 람다로 키를 지정하는 예 람다는 요소 x에 대해 : 우측에 지정된 기준으로 정렬한다 L = [ {'name': 'John', 'score': ..