직장인자기계발

    패스트캠퍼스 챌린지 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 : ..

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

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

    시청 날짜 : 11/13/2021 시청 강의 : 알고리즘 해결에 중요한 재귀 호출 이해 좀 늦은 감이 있지만, 재귀 호출 강의를 들어보았다. 재귀 재귀 함수란 특정 함수 내에서 자기 자신을 다시 호출하여 문제를 해결해나가는 함수이다. 문제를 해결하기 위해 원래 범위의 문제에서 더 작은 범위의 하위 문제를 먼저 해결하여 원래 문제를 해결해 나간다. Factorial 예제 그 유명한 팩토리얼 예제... 스택 오버플로우에서 그림과 코드를 가져와봤다. int factorial(int n) { if (n 1)로 주었지만, 대학에서 배울 때 Base Case를 콕 잡아서 코드 쓰는 게 더 편해졌기때문인지 몰라도, n==1일 때를 base case로 잡는 게 더 보기가 좋은 것 같다. public class Fact..