취준/FASTCAMPUS

    패스트캠퍼스 챌린지 19일차

    패스트캠퍼스 챌린지 19일차

    강의 날짜: 11/19/2021 시청 강의: 은근히 어려운 자료구조 : 링크드 리스트(2) 오늘 강의에서는 어제 정리해놓은 링크드 리스트 구현하기에 대한 내용이었다. 이미 어제 정리했고, 내용이 많이 부족한 것 같아 이중 링크드 리스트에 대해 정리하겠다. Doubly LinkedList (이중 연결 리스트) 이중 연결 리스트는 하나의 노드에 두 개의 링크가 존재한다. 각 노드는 이전 노드의 참조 링크와, 다음 노드의 참조링크를 가지고 있다 전체 노드를 순회해야 이전 노드를 찾을 수 있는 단일 연결 리스트와는 다르게, 이중 연결 리스트는 이전 노드의 링크를 통해 O(1)의 시간 복잡도로 이전 노드를 찾을 수 있다 노드의 추가와 제거가 단일 연결 리스트보다 많은 작업을 해야 한다 작업이 더 단순하고 잠재적으..

    패스트캠퍼스 챌린지 18일차

    패스트캠퍼스 챌린지 18일차

    강의 날짜: 11/18/2021 시청 강의: 은근히 어려운 자료구조 : 링크드 리스트 LinkedList 정의 연결 리스트 (Linked List)로 각 노드가 데이터와 포인터를 가지고 한 줄로 연결되어있는 방식의 자료 구조. 링크드 리스트는 인덱스가 존재하지 않기 때문에 검색 및 수정 시 첫 번째 노드부터 순차적으로 모든 노드를 탐색해야 한다 → 시간 복잡도 : O(1) 특정 위치(index)로 삽입/삭제/탐색해야 하는 경우는 O(n) 이 걸린다. 따라서, 탐색을 자주해야 한다면 배열을 사용하고, 데이터의 추가/삭제가 많은 경우에 연결 리스트를 사용하는 것이 좋다. 연결 리스트는 단일 연결리스트, 이중 연결리스트, 원형 연결리스트가 있다. 단일 연결리스트 (Singly Linked List) 단일 연결..

    패스트캠퍼스 챌린지 17일차

    패스트캠퍼스 챌린지 17일차

    시청 날짜 : 11/17/2021 시청 강의 : 스택 Stack 데이터를 제한적으로 접근할 수 있는 구조 -> 한쪽 끝에서만 자료를 넣거나 뺄 수 있는 구조 스택도 큐와 마찬가지로 https://visualgo.net/en/list에서 시뮬레이션해볼 수 있음. LIFO (Last in First Out) 가장 나중에 쌓은 데이터를 가장 먼저 뺄 수 있는 데이터 구조 FILO라고도 함 대표적인 스택의 활용 : 컴퓨터 내부 프로세스 구조의 함수 동작 방식 용어 push() : 데이터를 스택에 넣기 pop() : 데이터를 스택에서 꺼내기 peek() : 스택에 가장 마지막의 데이터 확인 장점 구조가 단순해서 구현이 쉽다 데이터 저장/읽기 속도가 빠름 단점 일반적인 스택 구현 시, 데이터 최대 개수를 미리 정해..

    패스트캠퍼스 챌린지 16일차

    패스트캠퍼스 챌린지 16일차

    시청 날짜 : 11/16/2021 시청 강의 : 큐 프로그래밍 중 가장 많이 쓰이는 자료구조 중 하나 : Data in and Data out 만 가능 https://visualgo.net/en/list의 queue탭에서 시뮬레이션 가능 FIFO (First in, First out) LILO라고도 불림 (last in last out) 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 (스택과 반대) front (앞)에선 무조건 삭제가 일어나고, rear(뒤, tail이라고도 함) 에선 무조건 삽입이 일어난다 "줄 서기"와 동일 용어 enqueue : 큐에 데이터를 넣는 기능 dequeue : 큐에서 데이터를 꺼내는 기능 peek : 맨 앞의 데이터가 무엇인지 훔쳐보는 기능 (literarlly ..

    패스트캠퍼스 챌린지 15일차

    패스트캠퍼스 챌린지 15일차

    시청 날짜 : 11/15/2021 시청 강의 : 투포인터(Two Pointers) Two Pointers 투포인터 알고리즘이란 화살표 두개에 의미를 부여해서 탐색 범위를 압축하는 방법 1차원 배열 위에 2개의 포인터를 만드는 경우 2개의 포인터가 모두 왼쪽에서 시작해서 같은 방향으로 이동 start→ start→ 10 11 18 19 54 21 -> 전형적인 double for loop int[] arr = {10,11,18,19,54,21}; int N = arr.length; for(int i = 0 ; i< N ; i++){ //i 포인터 for(int j = 0 ; j< N ; j ++){ //j 포인터 ... } } 2개의 포인터가 양 끝에서 서로를 향해 이동 start→ ..............

    패스트캠퍼스 챌린지 14일차

    패스트캠퍼스 챌린지 14일차

    시청 날짜 : 11/14/2021 시청 강의 : 이분 탐색 이분 탐색 (Binary Search) 정렬이 보장되는 배열에서 기준 x를 가지고 범위를 "이분"하면서 탐색 Search for... x 가 존재하는가 x이하, 미만, 초과의 원소는 몇 개가 있는가 x 랑 가장 가까운 원소는 무엇인가 오름 차순 정렬된 배열의 특성 임의의 M번 인덱스에 있는 A [M] 이 X 보다 크다면, A [M... N] 은 전부 x 보다 크다 임의의 M번 인덱스에 있는 A [M] 이 X 보다 작다면, A [M... N] 은 전부 x 보다 작다 위 조건은 정렬이 된 상태에서만 사용 가능 Example x = 38 10 15 20 35 40 L = 1, R = 5로 잡음 L : 탐색할 가치가 있는 범위의 왼쪽 끝 인덱스 R : ..