🎁 self-study/🧻 inflearn

    [자료 구조와 알고리즘] 스택(Stack)과 큐(Queue)

    🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 스택(Stack)의 개념과 구현 📍 스택(Stack) 👉🏻 단순한 규칙을 가지고 있는 리스트 👉🏻 FILO(First In Last Out): 먼저 들어온 데이터가 나중에 쓰이는 리스트 👉🏻 ex) 쌓은 그릇을 위에서부터 씀 👉🏻 먼저 들어온 데이터를 나중에 쓰기만 한다면 어떤 자료 구조를 쓰더라도 상관없음 : 데이터 삽입/삭제를 무조건 첫 번째 인덱스로 한다면 연결 리스트로도 구현 가능 👉🏻 차례가 중요할 때는 쓸모없으나 Ctrl + z(되돌리기), 자바 스크립트 괄호 문법 검사와 같은 기능에서는 매우! 유용! 📍 스택(Stack)의 구현 👉🏻 추상 자료형 정의 1. push - 데이터 삽입2. pop - 데이터 제거3. peek - top에 있는 데이터 ..

    [자료 구조와 알고리즘] 연결리스트(Linked list)

    🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 연결 리스트(Linked List) 📍 연결 리스트(Linked List) 👉🏻 저장하려는 데이터들을 분산해 할당하고 데이터들을 노드로 서로 연결해 줌 👉🏻 첫 노드의 주소를 알고 있으면, 연결되는 다음 데이터도 모두 알 수 있음 👉🏻 노드: 데이터를 담는 변수 하나와 다음 데이터를 가리키는 변수 1개를 가지고 있음 📍 장점 👉🏻 빈 메모리 공간 아무 곳에나 생성 후 연결만 해 주면 되기 때문에 초기 크기를 알지 않아도 됨 👉🏻 중간에 데이터를 삽입할 때도 다음 노드의 연결만 바꾸어 주면 되기 때문에 간편함 (삭제도 마찬가지) 📍 단점 👉🏻 데이터가 모두 떨어져 있어 바로 접근 불가능(4번째 노드에 접근하고 싶다면 첫 번째 노드를 기준으로 다음 데이터로 하나..

    [자료 구조와 알고리즘] 자바스크립트 실행 환경 구축과 배열

    🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 자바스크립트 실행 환경 구축 📍 vsCode, node.js 🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 배열 📍 프로그래밍 언어에서의 배열 👉🏻 프로그래밍 언어에서 제공하는 배열은 배열을 선언할 때 크기를 같이 할당해 줌 👉🏻 int arr[10] = {1, 2, 3, 4, 5}라면 열 개의 연속된 공간에 배열을 넣고, 남은 배열에는 쓰레기 값을 넣어 놓음 👉🏻 운영체제는 배열의 시작 주소만 기억하고 그 외의 값은 인덱스로 접근함 👉🏻 배열의 인덱스 참조는 길이에 상관없이 한 번에 가져옴 =. O(1)의 성능을 가짐 👉🏻 읽기, 쓰기와 같은 참조에서 좋은 성능을 보임 👉🏻 삽입, 수정, 삭제에서의 성능은 좋지 않음 기존에 할당된 데이터가 있고, 해당 크기..

    [자료 구조와 알고리즘] 시간 복잡도

    🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 시간 복잡도 📍 좋은 알고리즘은 무엇일까? 👉🏻 사용자의 요구에 따라 달라짐 (메모리 사용량, 속도 등) 👉🏻 보통은 속도를 좋은 알고리즘의 척도로 사용함 📍 시간 복잡도 👉🏻 특정 알고리즘이 어떤 문제를 해결하는 데 걸리는 시간 👉🏻 단, 사용자마다 컴퓨터 사양이 다르므로 객관적 평가는 불가능 👉🏻 따라서 단순히 걸리는 시간이 아닌 '코드에서 성능에 많은 영향을 주는 부분(반복문의 수)'로 평가 주어진 배열에서 5를 찾으시오. [1, 3, 5, 7] 1) 처음부터 찾는다면? 👉🏻 3번째에 찾게 됨 👉🏻 하지만 이도 5가 어디 있느냐에 따라 달라짐(첫 번째에 찾을 수도 있고, 최악의 경우 배열의 길이만큼 걸림) 📍 표현법 👉🏻 Big-Ω[빅 오메가] 최선의 ..

    [자료 구조와 알고리즘] 자료 구조와 알고리즘이란?

    🔥 그림으로 쉽게 배우는 자료 구조와 알고리즘 자료 구조와 알고리즘 📍 프로그램 👉🏻 자료 구조와 알고리즘으로 이루어짐 👉🏻 자료 구조: 데이터가 어떤 구조로 저장되고 어떻게 사용되는지 나타냄 👉🏻 가장 단순한 자료 구조는 변수와 배열 일반 변수의 처리 방법 👉🏻 데이터 추가 시, 변수를 추가하고 계산하는 코드 수정해야 함 let a = 87; let b = 70; let c = 100; let average = (a+b+c) / 3 배열의 처리 방법 👉🏻 데이터 추가 시, 배열에 데이터만 추가하면 됨 let arr = [87, 70, 100]; let average = 0; for(let i = 0; i < arr.length; i++) { average ++ arr[i]; } average /= ar..