- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- synflooding
- 보안기사
- 우선순위큐
- t검정
- 시간초과
- 데이터분석
- LangChain
- 데이터사이언스
- 정보보안기사
- snort
- 정보보안
- springboot
- 프로그래머스
- AWS
- 분산시스템
- 백준
- 딥러닝
- 리눅스
- 파이썬
- 침해대응
- 보안
- linux
- 그리디
- java
- FastAPI
- t-test
- redis
- lightsail
- 코딩테스트
- Python
목록Programming/자료구조 및 알고리즘 (4)
Techbrad
이전 포스팅 체이닝 기법에 이어 클로즈 기법에 대해 알아보자. [자료구조] 해시테이블 체이닝 기법 개념 및 구현 with 파이썬(Python) 해시테이블이란 key에 data를 저장하는 데이터 구조이다. 파이썬의 딕셔너리 구조와 동일하다. key를 통해 data를 찾아가는 과정은 다음과 같다. key를 hash 함수에 넣고 일정한 길이의 해시 코드를 얻 techbrad.tistory.com 클로즈 기법에 하나로 Linear Probing 이 있다. hash address 충돌로 인해 다른 hash address를 찾아 저장하는 방법이다. 체이닝 처럼 링크드 리스트 자료구조를 사용하지 않아도 되어 메모리 공간을 효율적으로 사용할 수 있다는 장점이 있다. 아래 그림처럼 Jack 과 Andrew는 같은 해시 ..
해시테이블이란 key에 data를 저장하는 데이터 구조이다. 파이썬의 딕셔너리 구조와 동일하다. key를 통해 data를 찾아가는 과정은 다음과 같다. key를 hash 함수에 넣고 일정한 길이의 해시 코드를 얻게 된다. 이후 3으로 나눈 나머지인 0, 1, 1이 index가 되며 이를 통해 data를 찾을 수 있다. 해시 테이블의 장점은 저장/읽기의 속도가 빠르다는 것이다. 따라서 검색, 조회가 빈번한 작업인 경우에 해시테이블을 활용하면 빠르게 데이터를 관리하는 효과를 얻을 수 있다. 하지만 장점이 있으면 단점이 있는법! index가 중복되는 경우 저장시에 충돌이 발생한다는 것이 단점이다. 해시 함수가 10을 나눈 나머지를 구하는 것이라고 가정해보자. 이러면 숫자 28을 10으로 나누면 8이 나머지이다..
처음에 링크드리스트에 대한 개념이 잡히지 않아 이해하기가 힘들었다. 하지만 프로그래밍을하며 메모리를 사용하는 방법에 대해 어느 순간 감이 왔고 링크드리스트에 대한 이해가 완벽하진 않지만 예전보다는 많이 되었다. 배열은 순차적으로 메모리의 공간을 사용한다. 아래의 그림처럼 4개 짜리의 배열을 선언 후 각각에 값을 저장하여 순차적으로 데이터를 한 공간에 나열한다. 이렇게 하면 장점은 빠르게 원하는 index에 맞는 데이터를 찾을 수 있다. 학창시절에 새로운 학교에 입학 했을 때 2학년 10반을 찾으려고 한다면 보통 어떻게 했을까? 나는 계단을 오른 후 2학년 1반을 찾아 그 길로 계속 가면 10반이 나왔다. 1반에서 부터 10반이 한 층에 순차적으로 놓여있으면 반을 찾기가 쉽다. 하지만 배열의 단점은 데이터..
버블 정렬이란? 차례대로 인접한 두개의 숫자를 비교하여 앞의 숫자가 뒤의 숫자보다 크면 두 숫자의 자리를 바꿔주는 정렬 버블 정렬 코드 (Python) def bubblesort(data): for turn in range(len(data) - 1): #전체 데이터 길이의 -1 만큼의 턴을 돈다 swap = False # swap이 발생하는지 확인한다. 발생하지 않으면 정렬리 됐다고 가정하고 break를 한다. for index2 in range(len(data) - turn -1): #1번째 턴 후 맨 마지막에 가장 큰 수가 위치하고 2번째 턴 후 마지막 두개의 숫자가 정렬되기 때문에 turn 수를 비교 횟수에서 빼서 최종 비교 횟수를 줄인다. if data[index2] > data[index2 +1..