빽 투더 기본기 [알고&자구 1편]. 정렬
기본 정렬에 대해서 정리해 놓는다. 그냥 나 알아보기 쉽게, 직관적으로만 설명한다. 시간 복잡도 O(n^2) 정렬 선택 정렬 뒤에 가장 큰, 또는 가장 작은 값을 현재 인덱스 뒤부터 찾아, 앞의 인덱스부터 하나씩 채워나가는 정렬. # selection sort a = [3,1,2,5,4,6,7] size = len(a) for i in range(size): for j in range(i+1, size): if a[j] < a[i]: a[i], a[j] = a[j], a[i] print(a) 버블 정렬 뒤에 가장 큰, 또는 가장 작은 값을 뒤로 밀어밀어 보내, 마지막 인덱스부터 하나씩 채워나가는 정렬 # bubble sort a = [3,1,2,5,4,6,7] size = len(a) for i in r..
재귀적으로 문제 해결하기 (1)
재귀적으로 문제 해결하기(1) 재귀적으로 문제 해결하기.재귀적으로 문제를 푼다는 것은 무엇일까? 가장 대표적인 예인 피보나치 문제를 떠올려보자.피보나치 수열f(n+2) = f(n) + f(n+1) 를 만족하는 수열을 피보나치 수열이라고 한다. 수로 표현하면1, 1, 2, 3, 5, 8, 13, 21, 34, 55, ... 과 같다.n을 입력받아 n번째 피보나치 수를 구하여라.이 문제를 아래와 같이 푼다면 재귀적으로 푼 것이다.long long fibo(int n){ if ( n == 1 || n == 2 ) return 1; else return fibo(n - 1) + fibo(n - 2); }쉽게말해, 함수 내에서 호출된 함수를 또 호출하는 것이 재귀이다.탈출조건이 있어야 한다.( 여기에선 n == ..