프로그래밍 언어 및 IT 정보/알고리즘 5

[Algorithm] 다익스트라(Dijkstra) 알고리즘 with c#

근 몇 년 동안 이직을 2번이나 하느라,, 굉장히 바쁜 하루하루를 살았어요 그러다 보니 블로그를 거의 안 들어오게 되었고 정신 차려보니...23년5월.. 다시 정신을 부여잡고 내가 배우고 공부한 것을 작성해 보기! 1. 다익스트라(Dijkstra) 알고리즘 다익스트라 알고리즘은 그래프에서 최단 경로를 찾기 위해 사용되는 알고리즘이다. 특정 출발점부터 다른 정점까지의 최단 경로를 구하는 문제를 해결하는 데에 적용된다. 다익스트라 알고리즘은 각 정점까지의 최단 거리를 점진적으로 계산하며, 그리디 알고리즘의 한 형태이다. 2. 다익스트라(Dijkstra) 알고리즘 활용분야 다익스트라 알고리즘은 다양한 분야에서 활용되는데, 대표적으로 길 찾기 애플리케이션 : 지도 서비스나 네비게이션 시스템에서 출발지와 목적지 ..

[Algorithm] python 알고리즘 관련 주요 라이브러리

오늘은 python에서 알고리즘 문제를 풀 때 도움이 되는 주요 라이브러리와 함수 등에 대해서 공부해보도록 하겠습니다. 내장 함수 sum( ): iterable 객체가 입력으로 주어졌을 때, 원소의 합을 반환 iterable : 반복가능한 객체 [ 리스트, 딕셔너리, 튜플, set 등 ] result= [1,2,3,4] print(sum(result)) 출력 : 10 max( ) : 2개의 파라미터 중 가장 큰 값을 반환 a = 10 b = 20 print(max(a,b)) 출력 : 20 min( ) : 2개의 파라미터 중 가장 작은값을 반환 a = 10 b = 20 print(min(a,b)) 출력 : 10 eval( ) : 수학 수식이 문자열 형태로 들어오면 해상 수식을 계산한 결과를 반환 resul..

[Algorithm] 정렬 알고리즘 with python

'정렬 알고리즘' 이란 정렬 알고리즘은 섞여있는 데이터를 순서대로 나열하는 것을 뜻합니다. 대표적인 정렬 종류 O(n²)의 시간 복잡도 (정렬할 자료의 수가 늘어나면 제곱에 비례해서 증가) 1. 버블 정렬(Bubble Sort) 2. 선택 정렬(Selection Sort) 3. 삽입 정렬(Insertion Sort) O(n log n)의 시간 복잡도 1. 병합 정렬(Merge Sort) 2. 퀵 정렬(Quick Sort) 1. 버블 정렬 (Bubble Sort) 버블 정렬이란 인접한 두 수를 비교하며 정렬해 나가는 방법으로 O(n²)의 느린 성능을 가지고 있습니다. 구현은 쉽지만 효율성이 가장 떨어지는 알고리즘입니다. arr = [6,5,3,1,8,7,2,4] for j in range(0,len(arr..

[Algorithm] 투포인터(Two Pointer) 알고리즘 with python

'투포인터' 란? 이름 그대로 두 가지의 포인터를 사용하여 문자열이나 배열(or 리스트)에서 원하는 값을 찾거나 반복문을 써야할 때 쓰기 좋은 방식입니다. 그냥 기본 방식인 탐색(반복문)을 쓰다 보면 시간이 오래 걸리거나 시간 초과가 걸리는 경우에 투포인터를 사용하면 메모리와 시간 효율성을 높일 수 있습니다! 시간복잡도 : O(N) 기본 탐색 반복문을 사용한다면 O(N^2) 투포인터는 2가지 방식이 있습니다 앞에서 시작하는 포인터와 끝에서 시작하는 포인터 빠른(Fast runner)가 느린 (slow runner)보다 앞서는 형식 형식 1. 앞에서 시작하는 포인터 끝에서 시작하는 포인터 쉬운 예제를 통해서 한번 이해해보도록 하겠습니다. Q . 주어진 배열에서 합이 27인 경우를 찾아라 풀이 1. 시작점(..

[Algorithm] 슬라이딩 윈도우(Sliding Window) 알고리즘 with python

'슬라이딩 윈도우' 란 윈도우(특정 범위)가 있을때 윈도우 내부 요소의 값을 이용하여 문제를 풀이하는 알고리즘입니다. 아래 그림을 참조하면 조금 더 쉽게 이해하실 것입니다. 예를들어 [1,3,2,6,-1,4,1,8,2] 라는 배열이 있는데, 연속적인 5개의 숫자의 합이 최대의 값을 구한다고 가정을 해봅시다. [1,3,2,6,-1],4,1,8,2 합 : 11 1,[3,2,6,-1,4],1,8,2 합 : 14 1,3,[2,6,-1,4,1],8,2 합 : 12 1,3,2,[6,-1,4,1,8],2 합 : 18 1,3,2,6,[-1,4,1,8,2] 합 : 14 이런 식으로 구해볼 수 있겠죠 ? 지금은 배열이 짧아서 하나씩 구해볼 수 있지만 배열이 30개, 연속적인 숫자 2개의 합을 구하라하면 일일히 계산해서 할..