‡Computer Science ‡/º 자료구조 8

[자료구조] B-Tree

B-Tree가 사용되는 이유   효율적 자료 탐색의 도구로 활용되는 이진트리는 검색과 삽입에 효율적이지만, 대용량 데이터에서 불편한 면이 있다. 이진탐색트리의 삽입,삭제 연산 시간복잡도이진탐색트리의 삽입과 삭제 연산은 탐색이후 이루어지기 때문에 탐색에 필요한 O(h)이 소요되며 연결리스트를 사용하므로 입력과 삭제에는 O(1)이 사용된다.따라서 총 소요되는 시간 복잡도는 O(h)이며 최악의 경우 탐색과 동일하게 O(N)이 소요된다. 따라서, 이진 탐색 트리는 한쪽 방향으로 노드가 집중된 편향트리에서는 효율적이지 않다. 이러한 이진트리의 특징에 대응하여 B트리는 각 노드에 여러 키를 저장할 수 있고, 여러 하위 노드를 가질 수 있다는 특징을 활용하여 트리의 높이가 상대적으로 낮아질 수 있으며, 한 번의 디스..

[알고리즘] 암호화 알고리즘과 예상 면접 질문

🔷 양방향 알고리즘암호화된 암호문을 복호화 할 수 있다 알고리즘 🔹 대칭키 방식암호화와 복호화에 동일한 키를 사용암호키가 노출되어 정보가 유출될 수 있다는 문제 발생이걸 보완하는게 비대칭 키DES, AES, 3DES연산 성능이 빠름 🔹 비대칭키 방식 암호화와 복호화할 때 서로 다른 키를 사용하는 알고리즘타인에게 절대 노출되어서는 안되는 개인키공개적으로 개방되어 있는 공개키를 쌍으로 이룬 형태RSA안전하지만 연산 성능은 떨어짐 🔷 단방향 알고리즘암호화 하되, 복호화 불가능 알고리즘🔹Hash 단방향 암호해시 함수: MD5, SHA현재 보안이 뚫리지 않은 SHA256, SHA512를 사용해야 함보안을 철저히 하기 위해서 salt 값을 적용하거나, hash 함수를 몇 번 더 연산하는 방법pbkdf2 :..

[알고리즘] 그리디 알고리즘 (Greedy Alogrithm)

그리디 알고리즘이란?말 그대로 탐욕스러운, 욕심 많은 알고리즘다익스트라 알고리즘의 기반이 되는 알고리즘선택의 순간마다 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달지역적으로는 최적일 수 있지만, 그 선택들을 계속 수집한다고 전역적으로 최적임을 보장 못함하지만 탐욕 알고리즘을 푸는 문제들은 지역적 최적 = 전역적 최적 임을 보장!  그리디 알고리즘 동작 방식 1. 선택 절차현재 상태에서 최적의 해답을 선택 2. 적절성 검사선택된 해가 문제의 조건을 만족하는 지 검사 3. 해답 검사원래의 문제가 해결되었는지 검사 -> 해결되지 않았다면 선택 절차로 돌아가서 다시 반복 그리디를 사용하기 위해 필요한 조건 1. 탐욕적 선택 속성앞의 선택이 이후의 선택에 영향을 주지 않는다. 2. 최적 부분 구조문제에..

[알고리즘] 이진 탐색과 완전 탐색

이진 탐색이진 탐색 알고리즘이란?매 탐색마다 탐색 범위를 반으로 좁혀가며 빠르게 탐색하는 알고리즘 단, 리스트(배열)이 정렬되어 있어야 함한번 탐색을 수행할 때 마다, 탐색의 범위가 반으로 줄어들기 때문에 시간 복잡도는 O(logN)  동작 방식 1. 배열의 중간 값을 가져온다 2. 중간값과 검색값을 비교   2-1. 중간 값 == 검색 값          종료  2-2. 중간 값           중간 값 기준 배열의 오른쪽 구간을 대상으로 탐색  2-3. 중간 값 > 검색 값          중간 값 기준 배열의 왼쪽 구간을 대상으로 탐색 3. 값을 찾거나 간격이 비어있을 때까지 반복  이진 탐색의 장단점단점: 정렬된 리스트에서만 사용할 수 있다장점: 검색이 반복될 때마다 검색 범위가 절반으로 줄기 ..

[해시] 해시의 개념과 예상 면접 질문

해시(Hash)/해시 함수(Hash Function)/해싱(Hashing) 해시 (Hash) 데이터를 다루는 기법 중 하나 해시 함수 (Hash Function)데이터를 효율적으로 관리하기 위해서 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수ex) 나눗셉 법, 곱셈 법, SHA 해싱 (Hashing)키 -> 해시값(Hash value)로 매핑되는 과정 자체  Hash Table  장점배열의 인덱스를 사용해서 검색/삽입/삭제가 매우 빠름 O(1) - 충돌이 없다면key와 해시값(hash)가 연관성이 없어 보안에 좋음키에 대한 데이터가 있는지 (중복) 확인이 쉬움 단점 저장공간이 많이 필요한 편여러 키에 대해 주소가 동일한 경우(충돌)  별도의 자료구조가 필요하다충돌이 발생하면 Chaining..

[정렬] 정렬의 종류와 외워둘 사항들, 예상 면접 질문

정렬 알고리즘의 종류삽입, 선택, 버블, 합병, 기수, 퀵, 쉘, 힙 정렬 정렬 알고리즘의 시간 복잡도Big-O 시간복잡도O(1) > O(log n) > O(n) > O(n log n) > O(n2) > O(2n) > O(n!) 💡 시간 복잡도는 최악의 경우를 두고 생각한다​퀵정렬의 경우 예외적인 상황(이미 정렬이 돼있는 경우)을 제외하곤 평균적으로 빠른 속도를 보여주지만데이터의 크기가 커지거나 규모가 큰 프로젝트에서는 이러한 예외 상황을 그냥 지나치기 어렵기 때문에정렬 알고리즘을 사용할 때는 항상 최악의 시간복잡도를 고려해서 사용하는 것이 예외를 두지 않는 좋은 방법이라고 생각한다.​다만, 정렬되는 데이터의 크기가 항상 동일하거나 로직이 복잡하지 않은 소규모의 프로젝트에서 사용할 경우에는 본인에게 맞..

[자료구조] 스택과 큐, 연결 리스트 - 개념과 예상 기술 면접 질문

🕵️‍♀️ 스택과 큐, 연결리스트  https://xoxoxoxox.tistory.com/250 자료구조(Data Structure)란자료구조란? 일상생활에서 우리는 사물들을 정리하는 여러 가지 방법을 이용한다. 마트 계산대에서는 줄을 이루어서 기다리기도 하고, 지도에서는 도시들을 연결한느 도로가 표시되어 있다. xoxoxoxox.tistory.com앞서 정리해던 자료구조에서 소개했던 데이터를 순서대로 정렬하는  선형 동적 자료구조에 속하는 스택과 큐 그리고 연결리스트에 대해 간단히 정리하고, 여기에서 출제될 수 있는 기술 면접 질문에 대해 포스팅하려고 한다.  👩‍💻 리스트 vs 스택 vs 큐 공통점차이점리스트(List)선형 자료 구조 (순서가 있음)읽기, 삽입, 삭제 연산이 리스트의 어느 곳에서..

자료구조(Data Structure)란

자료구조란? 일상생활에서 우리는 사물들을 정리하는 여러 가지 방법을 이용한다. 마트 계산대에서는 줄을 이루어서 기다리기도 하고, 지도에서는 도시들을 연결한느 도로가 표시되어 있다. 사람들이 사물을 정리하여 저장하는 것과 마찬가지로 프로그램에서도 자료들을 정리하여 보관하는 다양한 구조가 있다. 이것을 우리는 자료구조(data structure)이라고 한다.   프로그램 = 자료구조 + 알고리즘 컴퓨터 프로그램은 뭐로 이루어져 있을까? 흔히 "프로그램 = 자료구조+알고리즘"이라고 한다. 프로그램은 자료(data)를 처리하고, 이 자료들은 자료구조에 저장된다. 또, 알고리즘으로 주어진 문제를 처리하는 절차가 필요하다. 효율적인 자료구조가 성능이 좋은 알고리즘을 만들기 때문에 효율적이고 성능 좋은 프로그램을 만..