IT강의/알고리즘 16

선택 정렬

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 선택 정렬의 동작 원리를 살펴보겠습니다. 선택 정렬 (Selection Sort) - "두 값을 비교해서 왼쪽으로 보내자!" - 제자리 정렬 알고리즘의 하나입니다. 왼쪽 값이 오른쪽 값보다 더 큰지 작은지에 따라 맞바꿀지를 결정합니다. 이렇게 계속 맞바꿔서 최대값 또는 최소값을 왼쪽으로 계속 보내는 것입니다. 위의 배열로 알고리즘의 원리를 살펴보겠습니다. 여기서, 오름차순으로 정렬할 것인데, 오름차순은 왼쪽 값이 오른쪽 값보다 더 작으므로, 왼쪽 값이 더 크다면 서로 맞바꿔야 합니다...

버블 정렬

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 버블 정렬의 동작 원리를 살펴보겠습니다. 버블 정렬 (Bubble Sort) - "두 값을 비교해서 오른쪽으로 밀어내자!" - 두 인접한 원소를 검사하여 정렬하는 방법입니다. 왼쪽 값이 오른쪽 값보다 더 큰지 작은지에 따라 맞바꿀지를 결정합니다. 이렇게 계속 맞바꿔서 최대값 또는 최소값을 오른쪽으로 계속 밀어내는 것입니다. 위의 배열로 알고리즘의 원리를 살펴보겠습니다. 여기서, 오름차순으로 정렬할 것인데, 오름차순은 왼쪽 값이 오른쪽 값보다 더 작으므로, 왼쪽 값이 더 크다면 서로 맞..

플로이드 워셜 알고리즘 (2) - 소스 코드

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 플로이드 워셜 알고리즘을 소스 코드로 살펴보겠습니다. [동작 원리] 구체적인 동작 원리는 아래의 링크로 들어가서 이해하기 바랍니다. https://sharpcoder.tistory.com/317 [소스 코드] 아래의 링크에서 다운로드 가능합니다 https://github.com/jhs951101/FloydWarshall [결과 화면]

이진 탐색

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 이진 탐색 알고리즘의 동작 원리를 살펴보겠습니다. 이진 탐색(Binary Search) - "수색 범위를 줄이면서 범인을 잡자!" - 검색 범위를 줄여 나가면서 원하는 데이터를 찾는 알고리즘입니다. 여기서, 원하는 값보다 더 큰지 작은지를 판단해서 검색 범위를 줄여나갑니다. 예를 들어, 원하는 값이 5일 때, 3이 나오면 더 크다고 판단하고, 8이 나오면 더 작다고 판단해서, 범위를 계속 줄여나가는 것입니다. 이렇게 계속 줄여나가다보면 원하는 값을 찾을 수 있는 것입니다. (물론, 원..

플로이드 워셜 알고리즘 (1) - 동작 원리

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 플로이드 워셜 알고리즘의 동작 원리를 살펴보겠습니다. 플로이드 워셜(Floyd-Warshall) 알고리즘 - 그래프에서 모든 노드의 최단 거리를 구하는 알고리즘입니다. - 각 노드마다 가장 짧은 거리를 구한다고 이해하면 됩니다. 예를 들어, 노드 A, B, C가 있으면, A-B, A-C, B-C, 이렇게 가장 짧은 거리를 하나도 빠짐 없이 모두 구하는 것입니다. 이때, 출발지, 도착지, 경유지를 각각 설정합니다. 자세한 것은 아래에서 설명하겠습니다. 위의 그래프로 알고리즘의 원리를 살..

다이나믹 프로그래밍

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 다이나믹 프로그래밍에 대해서 살펴보겠습니다. 다이나믹 프로그래밍(Dynamic Programming, 동적 계획법) - "예전에 만든 것을 재활용하자!" - 과거에 구한 해를 활용해서 효율적으로 값을 구하는 기법입니다. - '예전에 저장한 값을 다시 사용하는 기법'이라고 이해하면 됩니다. 가장 대표적인 예시: 피보나치 수열에서 n번째 값 계산 피보나치 수열은 1,2번째 값을 1로 둔 상태에서 앞의 두 값을 계속 합해나가는 수열입니다. 이 수열의 n번째 값을 구하려면, 배열에 합계를 계..

그리디 알고리즘

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 그리디 알고리즘에 대해서 살펴보겠습니다. 그리디 알고리즘(Greedy Algorithm) - "가장 좋아보이는 것부터 찾아가자!" - 지금 이 순간 당장 최적인 답을 선택해서 적합한 결과를 도출하는 기법입니다. - '현재 가장 좋아보이는 것부터 찾아가는 기법'이라고 이해하면 됩니다. 위의 그림과 같이, 남자가 가장 예뻐보이는 여자부터 만나는 것을 떠올리면 됩니다 ㅋㅋㅋ 가장 대표적인 예시: 거스름돈 계산 거스름돈을 줄 때는 동전과 지폐의 수를 최대한 적게 해서 주는 것이 일반적입니다...

크루스칼 알고리즘 (2) - 소스 코드

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 크루스칼 알고리즘을 소스 코드로 살펴보겠습니다. [동작 원리] 구체적인 동작 원리는 아래의 링크로 들어가서 이해하기 바랍니다. 노드 내의 알파벳을 숫자로 바꾼 것만 제외하면 똑같습니다. https://sharpcoder.tistory.com/161 [소스 코드] 아래의 링크에서 다운로드 가능합니다 https://github.com/jhs951101/Kruskal [결과 화면]

다익스트라 알고리즘 (2) - 소스 코드

샤핑 지훈심 / 주로 IT 강의를 진행하는 공간입니다 ㅋㅋ 비즈니스 문의(프로그래밍 외주, 강연 등) 및 기타 질문은 아래의 이메일 참고 바랍니다. spg1101@naver.com www.youtube.com 이번 시간에는 다익스트라 알고리즘을 소스 코드로 살펴보겠습니다. [동작 원리] 구체적인 동작 원리는 아래의 링크로 들어가서 이해하기 바랍니다. 노드 내의 알파벳을 숫자로 바꾼 것만 제외하면 똑같습니다. https://sharpcoder.tistory.com/162 [소스 코드] 아래의 링크에서 다운로드 가능합니다 https://github.com/jhs951101/Dijkstra [결과 화면]

트리와 그래프의 차이

이번 시간에는 트리와 그래프의 차이를 살펴보겠습니다. 트리와 그래프 모두 각 노드가 불규칙적으로 연결되어 있는 구조이지만 차이가 있습니다. 트리 (Tree) - "엄격한 상하 관계" - 간선에 방향이 정해져 있고 부모-자식 관계가 존재합니다. 따라서 해당 노드보다 상위에 있다면 '부모 노드(parent node)' 라고 하고 하위에 있다면 '자식 노드(child node)' 라고 합니다. 위에 b를 기준으로 a는 부모 노드 이고 d는 자식 노드 입니다. - 만약 직속 상위 노드가 같고 레벨이 같다면 '형제 노드(sibling node)' 라고 합니다. 위에 e를 기준으로 f는 직속 상위 노드(c)가 동일하고 레벨이 같으므로 형제 노드 입니다. - 트리에서 가장 위에 있는 노드 하나를 '루트 노드(뿌리 노..

728x90
반응형
LIST