일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- react
- 연결리스트
- 자바스크립트
- 정규표현식
- hash
- CSS
- 브루트포스
- 정렬
- Node
- 딥다이브
- 코딩테스트
- BOJ
- 합병 정렬
- 자료구조
- 백준
- sort
- 기술면접
- 병합 정렬
- JavaScript
- 코테
- 리액트
- JS
- 프로그래머스
- 최소공배수
- 완전탐색
- node.js
- state
- 알고리즘
- useState
- 해시
- Today
- Total
목록자료구조 (7)
가치투자자
해시 (Hash) 해시는 무엇일까? 또 해시 테이블은 해시랑 같은것일까? 이에 대해 차근차근 살펴보고자 한다. 1. 배열 vs 해시 테이블 일반적으로, 데이터를 저장하고 활용하는 방법으로 배열(Array)을 떠올릴 수 있다. 아래의 예시를 보면, menu에 push를 통해 새로운 값을 추가할 수도 있고, for문 등을 통해 특정 값을 찾아볼 수도 있다. 즉, 배열은 특정 값을 찾기 위해 인덱스 0번부터 끝까지 탐색하는 선형 검색(Linear Search) 방식을 사용한다. 따라서 n개의 요소를 가진 배열을 순차적으로 검색하기에 시간 복잡도는 O(n) 이며, 살펴봐야 할 요소가 늘어날수록 시간은 무한히 늘어난다. const menu = [ { "icecream": 1000 }, { "coke": 1500 ..
DFS와 BFS 그래프는 여러 정점(node)과 그 정점들을 연결하는 간선(edge)으로 이루어진 자료구조다. 그래프나 트리 등 비선형 구조로 데이터가 담긴 자료구조는 순차적으로 나열된 선형 구조(배열, 연결리스트, 스택, 큐)에 비해 데이터 탐색이 훨씬 어렵다. 이러한 그래프의 정점들을 처음부터 끝까지 탐색할 때 대표적인 탐색 방법에는 깊이 우선 탐색(DFS)과 너비 우선 탐색(BFS)이 있다. 자주 쓰이는 이 두 가지 알고리즘에 대해 쉽게 설명해보고자 한다. 1. 깊이 우선 탐색 (DFS, Depth First Search) 깊이 우선 탐색 (DFS) 은 가장 깊이 있는(끝에 있는)정점까지 다 탐색하고, 다시 갈림길로 돌아와 다른 길로 끝까지 탐색하는 알고리즘이다. 쉽게 설명하자면, 여러 드라마들이 ..
백준 1874번 : 스택 수열 🔗 문제 링크 https://www.acmicpc.net/problem/1874 1874번: 스택 수열 1부터 n까지에 수에 대해 차례로 [push, push, push, push, pop, pop, push, push, pop, push, push, pop, pop, pop, pop, pop] 연산을 수행하면 수열 [4, 3, 6, 8, 7, 5, 2, 1]을 얻을 수 있다. www.acmicpc.net 💬 문제 스택(stack) 에 대한 이해가 있다면, 충분히 풀 수 있는 문제다. 1부터 n까지의 수가 존재한다. 1부터 하나씩 스택(stack)에 넣고 필요한 숫자가 stack에 들어오면 그걸 빼서 나열하여 수열을 만들어준다. - 스택에 오름차순으로 넣어줘야 하므로(pus..
백준 2164번 : 카드2 🔗 문제 링크 https://www.acmicpc.net/problem/2164 2164번: 카드2 N장의 카드가 있다. 각각의 카드는 차례로 1부터 N까지의 번호가 붙어 있으며, 1번 카드가 제일 위에, N번 카드가 제일 아래인 상태로 순서대로 카드가 놓여 있다. 이제 다음과 같은 동작을 카드가 www.acmicpc.net 💬 문제 큐(queue) 에 대한 이해가 있다면 더 잘 이해할 수 있고, 큐를 몰라도 쉽게 이해할 수 있는 문제이다. 숫자 N이 주어지므로 1부터 N까지 담고 있는 배열을 생성해준다. 맨 위에 있는 수, 즉 배열 첫 번째 요소를 제거(shift)해준다. 그 다음 위에 있는 수를 빼서(shift) 맨 밑으로 옮겨준다(push). 그리고 단 1장의 숫자가 남을..
연결리스트 (Linked List) 큐(queue)에 해당하는 알고리즘 문제를 풀다가 시간 복잡도 문제를 해결하기 위해 연결리스트에 대해 공부해보았다. 1. 연결리스트란? 연결리스트(Linked List) 는 index 번호를 사용하는 배열과 달리 연결(link)을 이용해 구현한 리스트를 말한다. 배열의 경우엔 아래처럼 index 번호로 값을 알 수 있다. 즉, index 번호와 값이 서로 연결되어 있다. const arr = ['a', 'b', 'c']; console.log(arr[1]) // index 1번의 값은 b 하지만 연결리스트는 각각의 값들이 서로 연결되어 있다. 아래의 사진을 보면, 10이라는 값에는 10이라는 data뿐만 아니라 10과 연결된 20의 주소(Link)까지도 담고 있다. 이..
스택(stack)과 큐(queue) 스택과 큐. 처음 들었을 땐 어려울 수 있지만, 쉽게 설명해보고자 한다. 1. 스택 (Stack) 스택(stack) 은 데이터를 아래에서 위로 쌓아올리는 구조를 말한다. 이때 데이터를 추가하거나 제거할 때 위에서부터 추가/삭제해야 하며, 이러한 자료구조를 LIFO(후입선출, Last-in, First-out)이라고 한다. 예로는 다음과 같은 것이 있을 수 있다. 브라우저창에서 뒤로가기 새로운 주소에 접속하면 그 방문기록이 히스토리 스택 아래에서부터 쌓일거고, 뒤로 돌아간다는건 맨 위에 쌓인 방문기록에서 아래로 돌아가는 것 Ctrl+Z로 실행 취소하여 직전 상태로 되돌아가기 역순 문자열 만들기 가장 마지막에 입력된 문자부터 출력하기 때문 수식의 괄호 검사 연산자 우선순위..