본문 바로가기
728x90

공부/알고리즘28

플로이드와샬 알고리즘(FloydWarShall) 안녕하세요. 옆집컴공생입니다. 오늘은 플로이드와샬 알고리즘(Floydwarshall) 에 대해 알아볼게요. 저번에 포스팅했던 다익스트라 알고리즘과 비슷한 부분이 굉장히 많은 알고리즘입니다. 혹시 다익스트라가 뭔지 모르시는 분은 아래 포스팅을 확인해주세요. https://com24everyday.tistory.com/137 다익스트라 알고리즘(Dijkstra Algorithm) 안녕하세요. 옆집 컴공생입니다. 오늘은 다익스트라 알고리즘을 배워볼거예요. 다익스트라(Dijkstra Algorith)은 다이나믹 프로그래밍을 활용한 대표적인 최단경로(Shortest Path) 탐색 알고리즘입니다. com24everyday.tistory.com 다익스트라 알고리즘은 '한 정점에서부터 다른 모든 노드를 최소 비용으로.. 2020. 6. 11.
다익스트라 알고리즘(Dijkstra Algorithm) 안녕하세요. 옆집 컴공생입니다. 오늘은 다익스트라 알고리즘을 배워볼거예요. 다익스트라(Dijkstra Algorith)은 다이나믹 프로그래밍을 활용한 대표적인 최단경로(Shortest Path) 탐색 알고리즘입니다. 흔히 인공위성 GPS 소프트웨어등에 많이 이용된다고 하네요. 음의 간선을 포함할 수 없는데 현실에는 음의 간선이란 게 존재하지 않잖아요? 그러니깐 매우 현실적인 알고리즘 중 하나라고 할 수 있겠습니다. 다익스트라 알고리즘은 다이나믹 프로그래밍이나 그리디 알고리즘을 분류가 되는데요. 다이나믹 프로그래밍인 이유는 이러합니다. '최단거리는 여러 개의 최단거리로 이루어져 있다.' 너무 당연하게도, A -> B -> C -> D 로 가는 최단 걸이로 가는데 A -> C -> B 가 A -> B -> .. 2020. 6. 10.
에레스토테네스의 체 안녕하세요. 옆집컴공생입니다. 오늘은 범위 내에 소수를 전부 구해주는 에레스토테네스의 체를 배워 보겠습니다. 소수란 영어론 Prime Number(프라임 넘버) 라고 하는 '약수가 1과 자기자신 뿐인 수'를 의미합니다. 예로 들면 2,3,5,7 등이 있겠습니다. 간단한게 소수를 구하는 반복문을 볼까요? 다음 함수는 x가 소수이면 true , 합성수(소수가 아닌 수)이면 false를 반환해주는데요. 1과 x를 제외한 나머지 모든 수를 for 문으로 돌면서 나누어지는 체크해보는겁니다. 사실 이 방법은 굉장히 오래 걸리는 편인데요. 사실 소수를 판별하는데는 소수의 제곱근 까지만 체크를 해주면 됩니다. 왜일까요? 합성수를 20을 생각해봅시다. 20의 약수는 2, 4, 5 ,10 입니다.( 1과 자신은 제외했습니.. 2020. 6. 9.
다이나믹 프로그래밍(Dynamic Programming) 안녕하세요. 옆집 컴공생입니다. 오늘은 다이나믹 프로그래밍에 대해 배워 보겠습니다. DP 라고도 부르죠. 다이나믹 프로그램은 알고리즘 문제를 푸는 큰 축인데요. 꼭 익혀놓아야 하는 부분입니다. 컴퓨터적인 사고력을 물어보기에 적합하기 때문에 자주 출제되기 때문이라고 합니다. ▶다이나믹 프로그래밍이란 '하나의 문제는 단 한번만 풀도록 하는 알고리즘' 입니다. 한번 푼걸 다시 여러번 푸는건 비효율적이겠죠? 이런 알고리즘을 개선시키는 방안입니다. ▷분할 정복 기법(Divide and Conquer)은 동일한 문제를 다시 푼다는 단점을 가지고 있습니다.(정렬과 같은 경우 다시 푸는 경우가 없습니다. 퀵정렬과 병합정렬이 빠른 이유입니다.) 예를 들어 피보나치 수열을 심각한 비효율성을 낳는데요. 피보나치 수열은 특정.. 2020. 6. 7.
728x90