스택(Stack) LIFO(Last In First Out) 구조로, 가장 나중에 들어온 게 먼저 나간다. 맨 위만 바라보는 구조 ex) 뒤로가기(ctrl+Z) 사용 스택 구현체 없음 Array.prototype 사용 arr.push() // 삽입 arr.pop() // 삭제 // peek()은 없음! 배열의 마지막 인덱스로 접근 큐(Queue) FIFO(First In First Out) 구조로, 가장 먼저 들어온 게 먼저 나간다. 맨 아래에서만 꺼낼 수 있음 ex) 인터넷 쇼핑 배송, 마트 진열 사용 큐 구현체 없음 Array.prototype 사용 arr.push() // 삽입 arr.shift() // 삭제 // peek()은 없음! 배열의 0 인덱스로 접근
연결리스트 순서가 있는 데이터들을 저장할 때 그 다음(이전) 순서의 데이터가 있는 주소를 현재 데이터에 포함시키는 방식으로 자료를 저장하는 구조 노드 연결 리스트에서 노드는 데이터와 포인터를 가지는 객체를 의미 포인터 : 다음 노드의 주소 각 포인터 변수의 주소도 따로 존재한다. 장점 필요할 때마다 데이터를 생성하여 연결하면 되기 때문에 메모리 효율 좋음 삭제 및 추가 시 데이터 재구성 용이 단점 탐색 시 느림 (처음 또는 마지막 노드 탐색은 빠름) 구현이 까다롭다 데이터를 저장할 공간 뿐만 아니라 다음 노드의 주소를 저장하는 공간이 추가적으로 필요 사용 자바스크립트에서는 포인터가 없다. 때문에 객체를 참조하는 방식으로 구현 (오히려 더 간단하다) 연결리스트 구현 function Node(val) { t..
Hash Table Hash 고유한 데이터를 다루는 기법 또는 고유한 값 key-value 구조이다. hash table에서 hash는 해시 함수를 통해 만들어진 고유한 값이다. Hash Function 임의의 길이의 데이터를 고정된 길이의 데이터로 매핑하는 함수 함수 내부적인 패턴에 의해 고유한 값(hash)이 생성되어 반환된다. Input : key // output : Hash 이렇게 나온 해시가 저장위치가 된다. Hash Table 해시 함수를 사용하여 키를 해시 값으로 매핑하고, 이 해시 값을 주소 또는 색인 삼아 데이터를 key와 함께 저장하는 자료구조 자바스크립트에서 Object, (Map, Set) 시간복잡도 : O(1) 아래 구조로 되어있다. 구성 key : 고유한 값. Input key..
도메인 이름 💡 웹 사이트에 엑세스하기 위해 사용되는 IP주소(영숫자)에 맵핑되는 텍스트 문자열 google.com 예시) IP주소가 192.0.2.2 일때 google.com 으로 쓸 수 있음 도메인 이름은 누구나 사용할 수 있다. 도메인을 관리하는 등록 기관에 등록만 하면 됨. 도메인 이름의 구분 💡 점으로 구분되며 2 or 3 부분으로 구분된다. 오른쪽에서 왼쪽으로 갈수록 구체적인 식별자이다. 제일 오른쪽(도메인 이름의 마지막 점 오른쪽 섹션) : 가장 일반적 최상위 도메인(TLD) .com, .net, .org 는 일반 TLD .uk, .kr, .jp 는 국가별 TLD 제일 왼쪽(도메인 이름의 첫 섹션) : 가장 구체적. 2차 도메인(2LD) : 점이 1개일 경우 3차 도메인(3LD) : 점이 2..
🐾backend 카테고리는 백엔드 로드맵을 따라 공부한 내용을 다룹니다. HTTP? HyperText Transfer Protocol의 약자로 World Wide Web의 기반이며 하이퍼텍스트 링크를 사용하여 웹 페이지를 로드하는 데 사용된다. 애플리케이션 계층의 프로토콜이고, 네트워크 프로토콜 스택의 다른 계층 위에서 실행된다(네트워크 프로토콜에 대해 다루기!). HTTP를 통한 일반적인 흐름은 클라이언트 시스템이 서버에 요청한 다음 응답 메시지를 보내는 것과 관련된다. 참고 HTTP 요청 HTTP요청은 웹 브라우저와 같은 인터넷 통신 플랫폼이 웹 사이트를 로드하는 데 필요한 정보를 요청하는 방식이다. 인터넷을 통해 이루어지는 각 HTTP요청에는 서로 다른 유형의 정보를 전달하는 일련의 인코딩 된 데이..
💡알고리즘은 입력, 출력, 유한성, 명백성, 효과성을 만족해야 한다. 개념 정리는 [자료구조]와 겹침 👉 문제로 직접 풀어보고 링크 남겨 둠 스택 2023.02.21 - [D • A/DataStructure] - [자료구조] 선형 자료구조 - 2. 랜덤 접근 불가능 - 스택(Stack) [자료구조] 선형 자료구조 - 2. 랜덤 접근 불가능 - 스택(Stack) ✅ 자료구조 : 데이터를 저장하는 방식 ✅ 선형 자료구조 : 한 종류의 데이터가 선처럼 길게 나열된 자료구조 랜덤 접근 불가능? 모든 자료에 O(1)으로 접근이 보장되지 않는 자료구조들 스택 (Stac jinijana.tistory.com ▶ 정의 먼저 들어간 자료가 나중에 나오는 LIFO 자료구조. 한쪽 끝에서만 데이터 삽입 삭제 가능 ▶연산자(..
💡알고리즘은 입력, 출력, 유한성, 명백성, 효과성을 만족해야 한다. 병합 정렬(Merge Sort) 분할 정복 방법으로 , 하나의 큰 문제를 두 개의 작은 문제로 분할한 뒤에 각자 계산하고 나중에 합치는 방법을 채택한다. 즉, 무조건 반으로 나누고 나중에 정렬하는 알고리즘이므로 $O(N*log_{2}{N})$을 항상 보장한다. 하지만 기존의 데이터를 담을 추가 배열이 필요하다는 점에서 메모리 활용이 비효율적일 수 있다. 백준 2750 package Y2023.March.week2; import java.util.Scanner; public class q2750 { static int[] sorted; static void merge(int[] sort, int start, int mid, int end..
스프링 mysql 연동 에러java.lang.IllegalStateException: Cannot load driver class: com.mysql.cj.jdbc.Driver 해결 진짜 5시간 걸려서 해결했다...😭5시간 어쩌면 짧을수도 있지만, 그중 4시간은 찾는 내내 똑같은 답변들만 나와서 미치는줄.. 스프링 김영한님의 강의를 다 보고 혼자 실습을 해보는데, 데이터 베이스 h2를 깔고싶지 않아서 이미 있던 mysql로 쓰려고 했다. 다른 블로그들을 참고하며 잘 따라 갔지만 에러. jar파일이 잘 있느냐,8.0 이상이고 com.mysql.cj.jdbc.Driver 중간에 cj잘 들어 갔느냐,환경변수 설정이 잘 되었느냐,뒤에 띄어쓰기 없느냐 진짜 별의 별거 다해봤다. 심지어 mysql도 버전이 ..
💡알고리즘은 입력, 출력, 유한성, 명백성, 효과성을 만족해야 한다. 정렬(Sort)은 알고리즘의 효율성 차이를 극명하게 느낄 수 있다. 아래 배열을 1부터 10까지 오름차순으로 정렬하는 문제를 예제로 다음 정렬들을 살펴보자! int[] arr = {1, 10, 5, 8, 7, 6, 4, 3, 2, 9}; 선택 정렬(Selection Sort) 선택 정렬은 첫 번째 값을 두 번째 값부터 마지막 값까지 차례대로 비교하고 가장 작은 값과 첫 번째 값을 바꾼다. 두 번째 값을 세 번째 값부터 마지막 값까지 비교하여 바꾸고 이 과정을 마지막까지 반복하여 정렬하는 알고리즘이다. 이 알고리즘은 $N * (N+1) / 2$ 즉, $N^2$만큼 계산을 실행해야 한다. 따라서 시간 복잡도는 $O(N^2)$이다. 데이터의..