본문 바로가기

it13

자료구조 - 스택 with javascript 안녕하세요 기공준입니다. 이번 글에서는 스택에 대해서 간단하게 알아보고 javascript를 이용해서 스택을 구현해보겠습니다. 스택은 목록의 끝에서만 접근할 수 있는 나열 구조입니다. 스택은 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 선형구조(LIFO - Last In First Out)로 되어 있습니다. 자료를 밀어 넣는 것을 push라 하고 반대로 넣어둔 자료를 꺼내는 것을 pop이라고 합니다. 이때 꺼내지는 자료는 가장 최근에 push 한 자료부터 나오게 됩니다. 이처럼 나중에 넣은 값이 먼저 나오는 것을 LIFO(Last In First Out) 구조라고 합니다. 연산 top() : 스택의 가장 윗 데이터를 반환. 스택이 비었다면 연산 정의 불가 pop(): 스택의 가장 윗 데이터를 삭제한다. 스택.. 2021. 3. 29.
자료구조 - 연결 리스트 안녕하세요 이번 글은 자료구조 중에서 연결 리스트에 대한 글입니다. 연결 리스트(linked list)는 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어 있는 방식으로 데이터를 저장하는 자료 구조입니다. 데이터를 담고 있는 노드들이 연결되어 있는데, 노드의 포인터가 다음이나 이전의 노드와 연결하는 역할을 하고 있습니다. 연결 리스트는 추가와 삭제가 O(1)의 시간에 가능하다는 장점이 있습니다. 하지만 데이터를 검색해 내는 데에는 O(n)의 시간이 걸리는 단점을 갖고 있습니다. 연결 리스트의 종류로는 단일 연결 리스트, 이중 연결 리스트, 원형 연결 리스트가 있습니다. 단일 연결 리스트 단일 연결 리스트는 각 노드에 데이터 공간과 포인터 공간이 있고, 각 노드의 포인터는 다음 노드를 가리킵니다. 이중.. 2021. 3. 27.
삽입 정렬 알고리즘(insertion sort Algorithm) - javascript 안녕하세요 기공 준입니다. 이번에는 삽입 정렬에 대해 알아볼 건데요 간단한 설명과 예제 및 코드로 글을 마무리하겠습니다. 삽입 정렬은 자료 배열의 모든 요소를 이미 정렬된 배열 부분과 앞에서부터 차례대로 비교하여, 자신의 위치를 찾아 삽입하는 정렬입니다. 배열이 길어질수록 효율이 떨어지지만 구현이 아주 간단하다는 장점이 있습니다. 시간 복잡도는 O(n²)입니다. 예제 [3,2,5,10,33,51,20,16] 시작 [2,3,5,10,33,51,20,16] 2 삽입 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,33,51,20,16] 패스 [2,3,5,10,20,33,51,16] 20 삽입 [2,3.. 2021. 3. 26.
선택 정렬 알고리즘(selection sort Algorithm) - javascript 안녕하세요 기공준입니다. 이번 글은 선택 정렬 알고리즘에 대한 글입니다. 선택 정렬 알고리즘은 정렬 알고리즘 중에 하나이고 알고리즘이 대단히 단순하기 때문에 메모리가 제한적인 경우에 사용하면 성능상의 이점이 있다고 합니다. 시간 복잡도는 O(n²)입니다. 선택 정렬을 하는 방법은 아주 간단합니다. 1. 주어진 리스트 중에 최소값을 찾는다. 2. 그 값을 맨 앞에 위치한 값과 교체한다. 3. 맨처음 위치를 뺀 나머지 리스트를 같은 방법으로 진행한다. 예제 [5,2,22,4] [2,5,22,4] [2,4,22,5] [2,4,5,22] 예제 코드 - javscript const selectionSort = (array) => { let minIdx; let tempValue; for(let i=0;i 2021. 3. 23.
javascript - Array(배열) javascript Array는 전역 객체이고 배열을 생성할 때 사용하는 리스트 형태의 고 수준 객체입니다. 배열은 프로토타입으로 탐색과 변형 작업을 수행하는 메서드를 갖는, 리스트와 유사한 객체입니다. 배열은 언제든지 늘어나거나 줄어들 수 있기 때문에 데이터들이 꼭 연속적으로 저장된다고 생각하면 안 된다. 예제를 통해 자주 사용하는 연산을 알아봅시다. let foods = [‘spaghetti’, ‘cutlet’];//배열 생성 foods.length;//배열 길이 let first = foods[0] //인덱스로 배열의 항목 접근 // spaghetti foods.forEach((item, index, array) => console.log(item, index)); //배열의 항목 들을 순환하며 접.. 2021. 3. 21.
콜백 함수(Callback function) with javascript 안녕하세요 기공준입니다. 이번 글은 콜백 함수에 대해 간단히 알아보고 자바스크립트 예제로 조금 더 쉽게 이해해보려고 합니다. 먼저 콜백 함수 이전에 콜백에 대해서 간단하게 알아보겠습니다. 콜백(Callback) 콜백은 다른 코드의 인수로 넘겨지며, 실행 가능한 코드입니다. 이 콜백을 넘겨받은 코드는 콜백을 필요에 따라 즉시 또는 나중에 사용할 수 있다고 합니다.(동기 비동기에 관한 내용인 듯) 콜백 함수(Callback function) 콜백 함수는 다른 함수에 인수로 전달된 함수입니다. 그럼 예제를 보고 더 쉽게 이해해봅시다. 예제 - 동기 콜백 함수 function hiHello(name){ console.log("Hi, "+name); } function hi(name,hello){ hello(na.. 2021. 3. 11.