[알고리즘 전략] 이분탐색
·
알고리즘
** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.** 주의점, 기억해야할 것을 위주로 작성합니다.  선형 탐색 Linear Search  - 순차탐색의 다른 말 - 배열에 여러 값들을 넣어 두고, 그 중에서 어떤 값을 찾을 때 반복문을 돌려 하나하나 비교하며 찾는 것 - O(N) 이분 탐색 Binary Search  - 탐색할 부분이 하나만 남을 때까지 탐색 범위를 줄여가는 방식 - 조건: 정렬된 배열- left = 0 , right = len(arr)-1, mid = (left + right) // 2로 하는 게 일반적. - arr[mid] > target 이면 왼쪽 탐색 (right = mid - 1) - arr[mid] - O(logN)* 파이썬 라이브러리 bisect from ..
[알고리즘 전략] 완전탐색
·
알고리즘
** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.** 주의점, 기억해야할 것을 위주로 작성합니다.  브루트 포스 Brute-Force - 무차별 대입이라는 의미. - 완전탐색 전략을 충실히 사용해서 확실하게 답을 구하는 알고리즘- 어떤 문제를 풀 때 먼저 '무식하게 모든 경우를 다 살펴봐도 될까?' 생각해보기 (제한시간 오버되면 다른 방법 생각하기)  ** 문제 푸는 방법   1. 반복문   2. 재귀   3. 순열   4. 조합=> 삼성 코테에서 순열 조합 많이 쓰인다고 함.  순열 - n개의 수 중에서 r개를 뽑아 줄을 세우는 총 방법의 수: nPr = n! / (n-r)! - 순서 고려 O - permutations(배열이름, 몇개를 고를지)from itertools import..
[알고리즘 전략] python 기본 자료구조 정리
·
알고리즘
** [한권으로 합격하는 취업 코딩테스트] 책을 참고해 작성했습니다.** 주의점, 기억해야할 것을 위주로 작성합니다.  배열- 선언 시 주의점 a1 = [[0] * 5] * 3a1[1][1] = 99 # [1][1] 외에 다른 곳의 값도 99로 출력됨. a2 = [[0] * 5 for _ in range(3)]a2[1][1] = 99 # [1][1] 만 변경됨. - 삽입/삭제는 적고 조회가 잦다 => 배열 - 삽입/삭제가 많고 조회가 적다 => 연결리스트 ** 대표문제 - 요세푸스 문제 0  스택/큐  스택 - LIFO Last Input First Output - 삽입/삭제: O(N)- 배열 사용, append(), pop() - 스택 활용 문제: 입력을 순차적으로 살펴보면서 각각의 데이터를 스택에 언..
[알고리즘/Python] 힙(Heap)
·
알고리즘
📌 힙 힙은 우선순위 큐를 위해 만들어진 자료구조로, 완전 이진트리의 일종이다.여러 값 중 최대/최소 값을 빠르게 찾아내도록 만들어진 반정렬 상태이다. 힙에서는 중복된 값을 허용한다. 최대/최소 값을 찾기 위해서 O(n)의 시간이 걸리지만, 힙을 사용하면 O(logN) 만큼 소요된다.  ✅ 반정렬 상태 (느슨한 정렬 상태)큰 값이 상위 레벨에 있고 작은 값이 하위 레벨에 있다.부모 노드의 키 값이 자식 노드의 키 값보다 항상 크거나 작은 이진 트리이다.✅ 우선순위 큐들어간 순서와 상관 없이높은 우선순위를 가진 원소는 낮은 우선순위를 가진 원소보다 먼저 처리만약 두 원소가 같은 우선순위를 가진다면 큐에서 그들의 순서에 의해 처리✅ 완전 이진트리 자식 노드가 최대 2개만 채워진다. 우선순위 큐 순서대로 채..
[알고리즘/Python] 스택(Stack) /큐(Queue)
·
알고리즘
📌 관련 문제 풀이 모음 (계속 추가추가..)2024.10.17 - [분류 전체보기] - [프로그래머스/Python] 알고리즘고득점Kit-스택/큐-프로세스2024.10.17 - [코딩테스트/프로그래머스] - [프로그래머스/Python] 알고리즘고득점Kit-스택/큐-올바른 괄호2024.10.17 - [코딩테스트/프로그래머스] - [프로그래머스/Python] 알고리즘고득점Kit-스택/큐-기능개발2024.10.12 - [코딩테스트/프로그래머스] - [프로그래머스/Python] 알고리즘고득점Kit-스택/큐-같은숫자는 싫어 📌 1. 스택 (Stack)후입 선출 구조 Last In First Out(LIFO)로 나중에 들어간 것이 먼저 나오는 구조이다.파이썬에서는 별도의 라이브러리 사용 없이 기본 리스트를 사용..
[알고리즘 전략] 탐욕법(Greedy)/ DP(동적 계획법)
·
알고리즘
※ 구글링하면서 재구성한 내용입니다. 세상 모든 개발자 블로그 만만세※ 계속 공부하면서 내용 채울 것임. 📌 탐욕법 (Greedy Algorithm)⭐ 푸는 방법 1. 일단 완전 탐색을 고민해본다. 제한시간/메모리 초과되는지 확인한다. 2. 문제에서 규칙성을 찾으면 풀 수 있는 편이다. 3. 아이디어를 떠올리고, 반레가 있는지 따져보면 된다.  ‘각 단계에서 최적이라고 생각되는 것을 선택’ 해 나가는 방식으로 진행하여 최종적인 해답에 도달하는 알고리즘💡 각각 상황에서 '최적'이라고 생각하는 방법을 선택한다.(상황에서 가장 높은 수를 선택합니다.) 그리디 알고리즘을 적용하기 위해서는 아래 2가지 속성을 만족해야 한다고 한다.  탐욕 선택 속성(Greedy Choice Property) 이란?각 단계에서..