본문 바로가기

Algorithm/알고리즘

Swift) 탐색 :: 완전 탐색(Brute Force) 이해하기

 

 

 

안녕하세요 :) 소들입니다!!!!!!!

이번 포스팅은 탐색 알고리즘 중에서도

완전 탐색 알고리즘에 대해 다뤄볼까 합니다!!! 👀

 

참고로 말하자면,

가장 간단하면서도 가장 쉬운 방법이라..

별도로 포스팅을 해야하나..? 했지만, 일단 알고리즘 이름이 존멋이잖아요?

뭔가 있어보이는 완.전.탐.색 ㅎ

 

따라서 간단하게 끄적여볼까 합니당!

 모든 포스팅은 편의 말투로 합니다~!!

 

 

 

 

1. 탐색이란?

 

자, 먼저 "탐색"이라고 했는데,

우리는 이전에 사실 이진 "탐색" 트리(BST)란 것을 이미 공부 했었음 :)

그럼 도대체 탐색 알고리즘이 뭐를 하는 것일까??

 

여러 데이터 중 원하는 데이터를 찾아내는 것

 

을 말함 ㅎㅎ

그중 이진 탐색 트리는, 데이터들을 특정 규칙에 따라 트리로 구성되어 있는 것을 말한 것이였음!
그럼 완전 탐색은 뭘까!!!

 

 

 

 

2. 완전 탐색이 모야?

 

완전 탐색 알고리즘..! 이론도, 구현도 정말 쉽다

 

데이터가 담긴 배열을 0번 index부터 마지막 index까지 차례대로 비교해서 

원하는 데이터를 찾는 방법

 

예.. 끝이고요.. 

만약 다음과 같은 배열에서 35란 데이터를 완전 탐색으로 찾고 싶다면

 

 

 

 

이런 시긍로.. 정말 완전.. 전체를.. 다 탐색한다..! 이런 말임

코드로 봐보자 :)

 

 

 

 

3. 코드로 구현 해보기

 

 

func sequencial(_ array: [Int], num: Int-> Bool {
    for element in array {
        if num == element {
            return true
        }
    }
    return false
}
 

 

 

예.. 끝이고요..

말 그대로 배열 전체를 순회하며 내가 찾는 값이 있으면 true,

없으면 false를 리턴하는 것임.... :O

 

 

 

 

4. 완전 탐색의 시간 복잡도

 

완전 탐색의 시간 복잡도는 

 

O(n)

 

(최악의 경우) 배열의 갯수 n만큼 순회하니까!!

간편하긴 하지만, 그만큼 시간복잡도가 좋아보이지 않음..

 

따라서 다음 포스팅에선, 탐색 시 시간 복잡도를 완전 탐색보다 반으로 줄일 수 있는,

이진 탐색 알고리즘을 배워볼 것임 :)

 

 

 

 

 

 

.

.

.

 

잘못된 내용, 피드백, 궁금한 점은

언제나 댓글 주세용 :)



Calendar
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
최근 댓글
Visits
Today
Yesterday