안녕하세요 SW마에스트로 블로그 이웃분들!
개발을 많이 하신 분이라면 매우 익숙한 단어,
알고리즘!
너무 많은 알고리즘으로 인해 무엇 먼저 익혀가야 할지 모르겠는
여러분을 위해 준비해 왔습니다!
여러분은 현재 몇 개의 알고리즘을 알고 계신가요?
그럼 그 중에 어떤 알고리즘을 주로 사용하시나요?
수많은 알고리즘을 어디에 적합하게 쓰는지 헷갈리는 여러분을 위해
개발자들이라면 필수로 알고 사용하는!
알고리즘에 관해 오늘 설명해 드리도록 하겠습니다.
[1] 이진 탐색 알고리즘
이진 탐색 알고리즘 동작 방법
1. 배열의 중간 값 찾기
2. 중간 값과 검색 값 비교하기
3. 값을 찾거나 간격이 비어있을 때까지 반복
** 이 알고리즘에는 시간 복잡도(big-O 지표)의 개념을 인지하고 계셔야 합니다!
[2] 퀵 정렬 알고리즘
퀵 정렬 단계
1단계 : 분할 (입력 배열을 피벗을 기준으로 비군 등 하게 두 개의 부분 배열로 분할)
2단계 : 정복 (부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 방법 적용)
3단계 : 결합 (정렬된 부분 배열들을 하나의 배열에 합병)
[3] 다익스트라 알고리즘
다익스트라 알고리즘 동작 단계
1. 출발/도착 노드 설정
2. '최단 거리 테이블' 초기화 > 1차원 배열
3. 현재 위치한 노드의 인접 노드 중 방문하지 않은 노드 구별
4. 해당 노드를 거쳐 다른 노드로 넘어가는 간선 비용 (가중치)을 계산
5. 3~4번 단계 반복
[4] 동적 계획법
동적 계획법 알고리즘은
하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여
다시 큰 문제를 해결할 때 사용하기 적합한 알고리즘입니다!
동적 계획법은 다이내믹 프로그래밍이라고도 하며 약자로 DP라고 합니다
DP를 쓰는 이유는 일반적인 재귀를 단순히 사용 시
동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산이 되기 때문이에요!
[5] 너비 우선 탐색
너비 우선 탐색은 BFS로 Breadth-First Search라고 하며
루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법입니다
두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 알고리즘을 선택합니다!
어떠셨나요 여러분?
사실 이보다 더 많은 내용들이 있지만..
여기에서 다 다뤄보기엔 정말 양이 많기 때문에
더 자세한 내용은 직접 찾아보며 익혀가셔도 좋을것 같습니다!
‘이럴 때 사용하는 알고리즘이지 ..’ 로 끝내지 말고
내가 사용하는 알고리즘이 어떤 알고리즘인지 알면
다음 번엔 검색하지 않고도 코드를 짜고 사용하겠죠 !?
여러분의 개발의 꿈을 응원합니다 - !
다음에도 유익한 소식을 가지고 올게요!