두두의 알고리즘/공부 (21) 썸네일형 리스트형 [알고리즘] 완전탐색(순차탐색)/이분탐색(이진탐색) 완전 탐색(=Brute Force) / 순차 탐색(=Sequential Search) 컴퓨터의 빠른 계산 성능을 활용하여 가능한 모든 경우의 수를 탐색하는 효율성 관점에서 최악의 방법 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차례대로 확인하는 방법 시간 복잡도 : O(N) = 선형 복잡도 = 입력값이 증가함에 따라 시간 또한 같은 비율로 증가하는 것 [반복문] def solution(trump): for i in range(len(trump)): if trump[i]==8: return i return -1 def sequential_search(n, target, array): for i in range(n): if array[i] == target: return i+1 .. [자료구조/알고리즘] 배열(Array)/큐(Queue)/스택(Stack) 배열 (Array) * 데이터를 나열하고, 각 데이터를 인덱스에 대응하도록 구성한 데이터 구조 * 파이썬에서는 리스트 타입이 배열 기능을 제공함 [배열은 왜 필요할까?] 같은 종류의 데이터를 효율적으로 관리하기 위해 사용 같은 종류의 데이터를 순차적으로 저장 장점 빠른 접근 가능 첫 데이터의 위치에서 상대적인 위치로 데이터 접근(인덱스 번호로 접근) 단점 데이터 추가/삭제의 어려움 미리 최대 길이를 지정해야 함 큐 (Queue) [큐 구조] * 줄을 서는 행위와 유사 * 가장 먼저 넣은 데이터를 가장 먼저 꺼낼 수 있는 구조 - 음식점에서 가장 먼저 줄을 선 사람이 제일 먼저 음식점에 입장하는 것과 동일 - FIFO(First-In, First-Out) 또는 LILO(Last-In, Last-Out) 방.. [알고리즘] 탐욕법 / 그리디(Greedy) 탐욕법이란? 전체가 아닌 현재 상태에서 최선의 선택을 하는 알고리즘 전체 탐색보다 빠르지만 반드시 정답을 도출하지 않는다 탐욕법의 조건 각 부분에서의 선택이 다른 부분에게 영향을 주지 않는다 각 부분에서의 최적 해결이 최종 해결방법이다 주의사항 탐욕법이 적용 가능한 문제인지 아닌지를 판별할 수 있어야 한다. 대부분의 그리디 알고리즘 문제에서는 문제 풀이를 위한 최소한의 아이디어를 떠올리고 이것이 정당한지 검토할 수 있어야 답을 도출할 수 있다. 어떤 코딩 테스트 문제를 만났을 때, 바로 문제 유형을 파악하기 어렵다면 그리디 알고리즘을 의심하고, 만약 오랜 시간을 고민해도 그리디 알고리즘으로 해결 방법을 찾을 수 없다면, 다이내믹 프로그래밍이나 그래프 알고리즘 등으로 문제를 해결할 수 있는지 재차 고민해보.. [알고리즘] 최단경로 - (Dijkstra(다익스트라)/Floyd-Warshall(플로이드-워셜)) 최단 경로 문제 - 최단 경로 문제란 두 노드를 잇는 가장 짧은 경로를 찾는 문제임 - 가중치 그래프 (Weighted Graph) 에서 간선 (Edge)의 가중치 합이 최소가 되도록 하는 경로를 찾는 것이 목적 최단 경로 문제 종류 1. 단일 출발 및 단일 도착 (single-source and single-destination shortest path problem) 최단 경로 문제 - 그래프 내의 특정 노드 u 에서 출발, 또다른 특정 노드 v 에 도착하는 가장 짧은 경로를 찾는 문제 2. 단일 출발 (single-source shortest path problem) 최단 경로 문제 - 그래프 내의 특정 노드 u 와 그래프 내 다른 모든 노드 각각의 가장 짧은 경로를 찾는 문제 > 따지고 보면 굉장.. [알고리즘] 정렬 - (선택/삽입/퀵/계수/버블/병합/라이브러리) 정렬 (sorting) 이란? - 정렬 (sorting): 어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것 - 정렬은 프로그램 작성시 빈번하게 필요로 함 - 다양한 알고리즘이 고안되었으며, 알고리즘 학습의 필수 > 다양한 정렬 알고리즘 이해를 통해, 동일한 문제에 대해 다양한 알고리즘이 고안될 수 있음을 이해하고, 각 알고리즘간 성능 비교를 통해, 알고리즘 성능 분석에 대해서도 이해할 수 있음 선택 정렬 다음과 같은 순서를 반복하며 정렬하는 알고리즘 1. 주어진 데이터 중, 최소값을 찾음 2. 해당 최소값을 데이터 맨 앞에 위치한 값과 교체함 3. 맨 앞의 위치를 뺀 나머지 데이터를 동일한 방법으로 반복함 https://visualgo.net/en/sorting 시간 복잡도 : O(N^2).. 이전 1 2 3 다음