메뉴 건너띄기
상단메뉴 바로가기 본문 바로가기

개발자를 위한 필수! 알고리즘!

  • 2024-08-01 19:19
  • 홍보담당자

안녕하세요 SW마에스트로 블로그 이웃분들!

미소

개발을 많이 하신 분이라면 매우 익숙한 단어,

알고리즘!

너무 많은 알고리즘으로 인해 무엇 먼저 익혀가야 할지 모르겠는

여러분을 위해 준비해 왔습니다!


 

여러분은 현재 몇 개의 알고리즘을 알고 계신가요?

그럼 그 중에 어떤 알고리즘을 주로 사용하시나요?

 

수많은 알고리즘을 어디에 적합하게 쓰는지 헷갈리는 여러분을 위해

개발자들이라면 필수로 알고 사용하는!

알고리즘에 관해 오늘 설명해 드리도록 하겠습니다.


[1] 이진 탐색 알고리즘

이진 탐색 알고리즘 동작 방법

1. 배열의 중간 값 찾기

2. 중간 값과 검색 값 비교하기

i. 중간 값이 검색 값이 같다면 종료 (mid = key)

ii. 중간 값보다 검색 값이 크다면 중간 값 기준 배열의 오른쪽 구간을 대상으로 탐색 (mid < key)

iii. 중간 값보다 검색 값이 작다면 중간 값 기준 배열의 왼쪽 구간을 대상으로 탐색 (mid > key)

3. 값을 찾거나 간격이 비어있을 때까지 반복


** 이 알고리즘에는 시간 복잡도(big-O 지표)의 개념을 인지하고 계셔야 합니다!



[2] 퀵 정렬 알고리즘

퀵 정렬 단계

1단계 : 분할 (입력 배열을 피벗을 기준으로 비군 등 하게 두 개의 부분 배열로 분할)

2단계 : 정복 (부분 배열의 크기가 충분히 작지 않으면 순환 호출을 이용하여 다시 분할 정복 방법 적용)

3단계 : 결합 (정렬된 부분 배열들을 하나의 배열에 합병)


[3] 다익스트라 알고리즘

다익스트라 알고리즘 동작 단계

1. 출발/도착 노드 설정

2. '최단 거리 테이블' 초기화 > 1차원 배열

3. 현재 위치한 노드의 인접 노드 중 방문하지 않은 노드 구별

4. 해당 노드를 거쳐 다른 노드로 넘어가는 간선 비용 (가중치)을 계산

5. 3~4번 단계 반복


[4] 동적 계획법

동적 계획법 알고리즘은

하나의 큰 문제를 여러 개의 작은 문제로 나누어서 그 결과를 저장하여

다시 큰 문제를 해결할 때 사용하기 적합한 알고리즘입니다!

동적 계획법은 다이내믹 프로그래밍이라고도 하며 약자로 DP라고 합니다

DP를 쓰는 이유는 일반적인 재귀를 단순히 사용 시

동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산이 되기 때문이에요!


[5] 너비 우선 탐색


너비 우선 탐색은 BFSBreadth-First Search라고 하며

루트 노드에서 시작해서 인접한 노드를 먼저 탐색하는 방법입니다

두 노드 사이의 최단 경로 혹은 임의의 경로를 찾고 싶을 때 이 알고리즘을 선택합니다!


어떠셨나요 여러분?

사실 이보다 더 많은 내용들이 있지만..

여기에서 다 다뤄보기엔 정말 양이 많기 때문에

더 자세한 내용은 직접 찾아보며 익혀가셔도 좋을것 같습니다!

‘이럴 때 사용하는 알고리즘이지 ..’ 로 끝내지 말고

내가 사용하는 알고리즘이 어떤 알고리즘인지 알면

다음 번엔 검색하지 않고도 코드를 짜고 사용하겠죠 !?

웃음

여러분의 개발의 꿈을 응원합니다 - !

다음에도 유익한 소식을 가지고 올게요!

 

 

첨부파일 (1)