해시 테이블(Hash Table) Key, Value로 데이터를 저장하는 자료구조 내부적으로 배열(버킷)을 사용하여 데이터를 저장하기 떄문에 데이터 검색할 수 있음 시간복잡도 O(1) -> Search(검색), Insert(삽입), Delete(삭제) 해시값으로 변환하는 과정을 '해시 함수(Hash Function)'이라고 함 저장할 배열(버킷)이 중복되는 현상 -> 해시 충돌(Collsion) 해시법 데이터 저장 위치 = 인덱스 데이터 추가 또는 삭제가 빈번한 경우 효율적으로 수행 가능 해시(hash)란 특정 연산의 결과 값(데이터 접근시 사용) 원소값을 해시값으로 변환하는 과정 -> 해시 함수(Hash Function) 해시 충돌 처리방법 체인법(Chaining) : 해시값이 같은 원소를 연결 리스트..
728x90
반응형
크래프톤정글
퀵 정렬(Quick Sort) 가장 빠른 정렬 알고리즘으로 알려져있음 피벗(pivot)을 기준으로 좌측에는 피벗보다 작은 값, 우측에는 큰 값을 정렬 def qsort(arr, start, end): # 배열과 좌우 끝 인덱스 pl = start pr = end # 피봇값 지정 pivot = arr[(pl+pr)//2] # 우측 인덱스가 좌측 인덱스가 크거나 같을동안 진행 while pl pivot: pr -= 1 # 좌우 인덱스가 교차하지 않을때 swap if pl pl: qsort(arr, pl, end) array = [5, 2, 6, 7, 4, 3, 8, 1, 9, 0] qsort(array, 0, 9) print(array)# 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 피벗(pivot)..
컴퓨터 시스템(CS:APP) 인트로 아래와 같이 hello.c 프로그램의 수명주기를 따라가면서 주요 개념과 용어, 관련된 구성요소를 소개 #include int main() { printf("hello, world\n"); return 0; } 1.1 정보는 비트와 컨텍스트로 이루어진다. hello 프로그램은 소스 프로그램(소스파일)으로 생성되어 hello.c라는 텍스트 파일에 저장됨 소스 프로그램 : 0과 1로 표시되는 비트(bit)들의 연속 / 바이트라는 8비트 단위로 구성 각 바이트는 프로그램의 텍스트 문자를 나타냄 대부분 컴퓨터 시스템은 텍스트 문자를 아스키(ASCII) 표준을 사용해 표시 아스키 표준은 각 문자를 바이트 길이의 정수 값으로 나타냄 hello.c처럼 오로지 아스키 문자들로만 이루어..
자료구조(Data Structure) 1. 문자열 둘 이상의 결합된 문자 불변성 : 기존 객체의 값을 바꾸는 것이 아닌 수정된 값을 가진 객체를 생성 문자열 끝에는 널 문자(종단문자, '\n') 반드시 들어감 없다면 출력시 쓰레기값이 같이 출력됨 2. 배열 연속된 메모리 공간에 순차적으로 저장된 데이터 모음 작업 average case worst case 접근(read) O(1) O(1) 삽입 및 추가(insert) O(n) O(n) 삭제(delete) O(n) O(n) 조회(search) O(n) O(n) 동일한 데이터 유형을 가짐 각 요소에 접근하는 시간은 O(1) => 인덱스로 바로 접근 가능 연속된 메모리에 단일 블록화하여 데이터 저장(낭비되는 공간이 적음) 삽입 및 삭제시 모든 요소를 움직여줘야..
지나온 과거에 대한 성찰 지나와 과거를 살펴보면 나는 내 자신을 남들에게 많이 숨기고 좋든 싫든 남들에게 맞추고 살았던 것 같다. 다른 사람과의 관계가 틀어지는 것이 싫었거나 두려웠던 것 같다. 내가 그냥 피해를 보고 말지라는 생각으로 매번 회피하면서 지냈다. 가끔은 내가 굳이 왜 피해를 보면서 살아야 하나 싶어서 성격을 바꿔보려고 했지만, 사람 성격이 쉽게 바뀌지는 않는다. 나는 겁 많고 지레 먼저 걱정하는 성격이다. 더군다나 걱정은 하는데 그에 따른 행동은 하지 않고 합리화만 했던 것 같다. 5개월 동안 얻어가고 싶은 것 5개월이란 기간이 길다고 생각하지 않는다. 지금 벌써 4일째 공부를 하고 있는데, 시간이 정말 빠르게 흐른다. 이번에는 CS(Computer Science) 기초지식 뿐만 아니라 내..
728x90
반응형