[JS|자료구조] 자바스크립트(javascript)의 Queue(큐) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
- Queue 란? FIFO (First In First Out)가장 먼저 들어온 데이터가 가장 먼저 나가는 형태.즉, 양방향으로 데이터를 넣고 뺄 수 있다. front 변수를 사용하여 데이터를 삽입하기에 복잡도는 O(1)이다.데이터 삭제의 복잡도 또한 O(1)이지만, 자바스크립트에서는 주의해야할 점이 있다.자바스크립트에 있는 Array의 shift() 메소드를 사용하면 첫 번째에 있는 데이터를 삭제하여 O(1)처럼 보이지만, 두 번째 데이터부터 맨 끝까지 정렬하기에 O(n)의 복잡도를 가진다.따라서 front 변수와 rear 변수를 사용하여 데이터 삭제를 해줘야 O(1)의 처리를 할 수 있다. - Queue의 ADT 연산 정의0. Queue의 구조function Queue(array = new Arra..
[JS|자료구조] 자바스크립트(javascript)의 Stack(스택) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
- Stack이란?LIFO (Last In First Out)가장 나중에 들어온 데이터가 가장 먼저 나가는 형태.즉, 한 방향으로만 데이터를 넣고 뺄 수 있다. 한 방향으로만 데이터를 삽입/삭제할 수 있기에 그 복잡도 또한 O(1)이다.새로 삽입한 데이터의 주소를 top라는 변수에 넣고, 삭제할 때 top가 가리키는 주소에 저장되어있는 변수를 삭제하면 된다. - Stack의 ADT 연산 정의0. Stack의 기본 구조function stack(array = new Array()) { this.arr = array this.top = 0}1. Stack의 데이터 삽입stack.prototype.push = function (item) { return (this.arr[this.top++] = item..
[JS|자료구조] 자바스크립트(javascript)의 Linked List(연결리스트) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
배열이 연속된 메모리에 저장하고, 인덱스를 사용한 자료구조라면 연결리스트는 떨어진 메모리에 저장한 뒤 링크를 사용한 자료구조라고 할 수 있다. 인덱스를 사용하기에 Arr[1] 와 같은 명령으로 검색에 O(1)의 복잡도가 드는 배열과 달리 Head에서부터 차례대로 검색해야하는 연결리스트의 검색 복잡도는 O(n)이다. 연결리스트의 종류 1. 단순 연결리스트 : Node 1개에 링크 1개가 있다. 2. 이중 연결리스트 : Node 1개에 링크 2개가 있다. (이전 Node 링크 1개, 이후 Node 링크 1개) 3. 원형 연결리스트 : 마지막 Node(tail)의 링크가 첫 Node(head)를 가리킨다. 4. 이중 원형 연결리스트 : 이중 + 원형의 연결리스트 연결리스트의 종류 1. 단순 연결리스트 :Nod..
[배열] 백준 10818번. 최소,최대
·
💾 자료구조 & 알고리즘/문제 풀이
백준 10818번. 최소, 최대 10818번: 최소, 최대 첫째 줄에 정수의 개수 N (1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄에는 N개의 정수를 공백으로 구분해서 주어진다. 모든 정수는 -1,000,000보다 크거나 같고, 1,000,000보다 작거나 같은 정수이다. www.acmicpc.net 문제풀이 준비 단계 (파일 입력 및 변수 설정) 1. 먼저 javascript의 fs모듈을 사용하여 파일의 입출력을 처리하였다. '/dev/stdin' 코드는 백준에서의 파일 입력을 받기위한 경로. 로컬 컴퓨터에서 코딩할 때에는 바깥경로에 예제.txt를 만들어서 '..예제.txt'로 처리하였다. 2. 들어오는 값은 두 줄이고 그 중 첫번째 줄은 배열의 길이, 두번째 줄은 배열이였는데 배열의 길이는..
[JS|자료구조] 자바스크립트(javascript)의 Array(배열) 알아보기
·
💾 자료구조 & 알고리즘/이론 정리
배열이라면 여러 값들을 연속된 메모리 공간에 저장하고, 인덱스를 통해 사용할 수 있는 자료구조 형식이다. 인덱스라는 속성이 있기에 특정 값에 접근할 때(ex. Arr[0]) 시간 복잡도는 O(1) 이다. 따라서 매우 효율적인 데이터 접근이 가능하다. 하지만 우리가 사용하게 될 배열들은 가지런히 정렬되어있는 단순한 형태만 있지는 않을 것이다. 정렬되어있지않은 배열일 경우, n개의 데이터에서 원하는 데이터를 찾기 위해서는 선형 탐색을 해야한다. 이때의 시간 복잡도는 O(n)이 될 수도 있다. 오늘 다뤄볼 자바스크립트의 배열은 다른 언어에서의 배열과는 다르다. 배열 각 요소의 공간이 서로 동일하지 않을 수도 있고, 연속적으로 이어져있지 않을 수도 있다. MDN 사전에서 알아본 바에 의하면, Javascript..
내가 개발블로그로 티스토리를 선택한 이유?
·
etc.
■ 뭣도 모르고 만들었던 github blog 아직 블로그에 대해 깊게 생각해보지 않았던 2022년. github blog가 있다는 것을 알게되면서 '나만의 블로그? 멋있겠다!'라는 이유 하나로 열심히 찾아봐 첫 게시글을 겨우 올렸었다. 코드를 고치며 내 마음대로 자유자재로 편집하고, 사용할 수 있는 큰 장점이 있다는 것은 다른 말로 한다면 모두 다 내가 직접 만들어야 한다는 단점이 되기도 한다. 아직 git에 대한 이해와 블로그를 정확히 어떻게 사용할 것인지에 대한 가이드라인이 없었던 내가 입문용으로 깃허브 블로그를 사용한다는 것은 어불성설이었다. 그렇게 깃허브블로그만큼 자유도가 높으면서도, 깃허브블로그보다는 접근성이 높은 플랫폼을 찾다가 노션에 정착하였다. ■ 나만의 기록만을 위한 공간, 노션 대학교..