본문 바로가기

iOS/알고리즘

(2)
[Swift : 알고리즘] 순열과 조합 (Permutation and Combination) 코딩 테스트에서 빈번하게 사용되는 순열과 조합 알고리즘에 대해 공부해보자. 직접적으로 몇 개의 조합을 찾아라!라는 문제보다는 순열 혹은 조합을 적절히 사용해서 경우의 수를 찾는 문제들이 빈번히 출제되므로 대비해두는 것이 좋다. 1. 순열 (Permutation) '서로 다른 n 개의 원소 중에서 r 개를 골라 순서를 구분하여 나열한 경우의 수'를 의미한다. 순열은 nPr 로 표현한다. 순열의 개수를 구하는 공식은 n! / (n-r)! 이다. 순열에서 중요한 점은 순서를 구분한다는 점이다. 예를 들어 [1, 2, 3, 4]의 배열에서 순서를 구분하여 3가지 원소를 경우의 수를 나열하면 아래와 같이 24개의 경우의 수가 나온다. [1, 2, 3] [1, 2, 4] [1, 3, 2] //[1, 2, 3] 과 ..
[Swift : 알고리즘] 선택정렬(Selection Sort) 선택정렬은 '가장 작은 원소를 앞으로 보내는' 알고리즘 방법입니다. 두 번의 For Loop를 사용하며 배열을 순회하며 min(최솟값)을 찾아서 그 값을 배열의 맨 앞으로 보내고 해당 값 이후의 인덱스부터 다시 최솟값을 찾아서 비교하며 정렬하게 됩니다. O(N^2)의 시간 복잡도를 가지는 구현이 단순하지만 비효율적인 알고리즘입니다. func selectionSort(notSortedArray: [Int]) -> [Int] { /* for swap var temp: Int */ var index: Int var array: [Int] = notSortedArray for i in 0 ..< notSortedArray.count { //External Loop var min: Int = array[i] in..