본문 바로가기

프로그래밍/자료구조4

[자료구조] # 3. HashMap vs HashTable 일단 이 차이는 다른 언어는 모르겠는데 Java에서는 두 자료구조가 다르다. 그래서 위 제목이 질문으로 들어온다면 Java 기반으로 질문하신거다. 일단 Hash가 무엇인가.키 → 값을 변환시키는 것을 해싱(Hashing) 이라 한다.구체적으로 가변길이를 가지는 Input 데이터 → 고정된 길이를 가지는 해시값(Output 데이터) 변환이다. 이렇게 고정된 길이 값을 가지는 해시값은 이제 또 다시 "인덱스화" 되어, 그 해시값과 매칭되는 실제값을 찾아준다.이런 개념이랄까. ok. 그러면 해시맵이랑 해시테이블 차이가 뭔가 둘의 가장 큰 차이는 Thread-Safe 유무이다. 해시테이블 같은 경우는 각 데이터 변경 메서드가 동기화 선언이 되어있다.그래서 메서드 호출을 하면 스레드간 동기화 락이 걸려져 있는 상.. 2024. 7. 18.
[자료구조] # 2. Set vs Map 꽤 자주 등장하는 자료구조 질문이다.Set이 뭐고 Map이 무엇인가? 일단 파이썬에서의 Map과 Java 또는 JS에서의 Map은 다르다.파이썬에서의 Map은 보통 아래처럼 사용하는데arr = list(map(int,input().split()))입력을 받을 때, 모두 int형태로 통일받겠다는 뜻이다. 단순히 각 요소에 타입이나 함수를 적용하는 식! JS에서는// 생성let map = new Map();// 세팅map.set('key1', 'value1');map.set('key2', 'value2');map.set(3, 'value3'); // 숫자 키map.set({a: 1}, 'value4'); // 객체 키// 접근console.log(map.get('key1')); // 'value1'conso.. 2024. 7. 17.
[자료구조] # 1. 배열(Array)과 리스트(List)의 차이 은근 많이 나오는 질문인데, 그냥 무지성 파이썬 입문하다보면 이 두 개념의 차이에 대해 잘 모를 수도 있다. 일단... 질문은 저렇게 러프하게 나오지만 정확히는 정적배열과 연결리스트의 차이를 염두한 질문 같다.배열도 넓은 범위에서는 "선형 리스트" 에 속하기 때문이다. 아마 Java를 쓰시는 분들이라면 ArrayList vs LinkedList에 대한 질문임을 캐치하셨을 것이다. 일단 정적배열이라 함은.. 배열을 선언할 때, 그 크기를 미리 정해두는 것을 시작으로 한다.int arr[5] = {0,}; 그럼 이런 배열의 특징이 무엇일까.연속된 메모리 주소에 값이 할당된다.인덱스로 접근하는 탐색 방법이라 조회 속도는 빠른데, 삽입/삭제가 느리다. 삽입/삭제가 느린 이유는 맨 끝이 아닌 다른 부분의 경우다... 2024. 7. 14.
[자료구조] # 0. 언제 스택을 쓰고, 큐를 써야할까? 자료구조의 가장 기초가 되는 두 유형이다.Stack : Last In First Out 형태의 데이터 처리 방식으로 입구와 출구가 같다고 보면 된다.Queue : First In First Out 형태의 데이터 처리 방식으로 입구와 출구가 다르며, 원형 통자의 "채널" 이라고 보면 된다.정의는 누구나 알지만, 정작 그래서 언제 스택을? 언제 큐를? 물어보면 막상 대답하려니 어려울 수도 있다. 스택의 대표적인 예시는 아마 "뒤로가기" 이지 않을까?여러분들이 이 글을 보기 위해서는 일단 브라우저를 키고, 스택 또는 그 외 유관한 키워드를 검색하고, 이 게시글을 눌러서 왔을 것이다. 그럼 뒤로가기를 하면? 검색 결과 화면이 뜰것이고, 다시 또 뒤로가기를 하면 검색창이 있는 메인 브라우저 화면으로 간다. 또 뭐.. 2024. 7. 3.