본문 바로가기

Code/ALGORITHM7

정렬 데이터를 특정한 기준에 따라 순서대로 나열하는 것을 말하고 프로그램을 작성할 때 가장 많이 사용하는 알고리즘 중 하나다. 정렬 알고리즘은 매우 다양하고 요구하는 문제에 대해서 효과적인 정렬 알고리즘을 선택해 사용하는 것이 프로그램에 효율적인 동작구동에 큰 도움을 준다. 선택 정렬 가장 작은 데이터를 선택해서 맨 앞에 놔두고 이러한 과정을 연속해서 진행하는 정렬로, 작은 값들을 앞에서부터 차곡차곡 쌓는다고 생각하면 좋다. 이 방법은 가장 원시적인 방법으로 매번 가장 작은 것을 선택한다라는 뜻으로 선택 정렬이라 이름 붙게 되었다. 따라서 마지막 요소를 제외한 모든 데이터를 작은 순서로 접근해야 하고 N-1 번 자리교체가 이루어져야 한다. 선택 정렬은 N -1 번 만큼 자리이동을 하고 , 매번 작은 수를 찾기.. 2021. 8. 5.
탐색 리스트 내에서 데이터를 매우 빠르게 탐색하는 이진 탐색 알고리즘은 종류에 따라 상황에 맞게 사용하면 시간적&공간적 효율을 가져다 줄 수 있다. 순차 탐색 리스트 안에 있는 특정한 데이터를 찾기 위해 앞에서부터 데이터를 하나씩 차레대로 확인하는 방법이다. 정렬되어 있지 않은 데이터에 대해서 탐색을 진행할 때 효율적이다 리스트 내 데이터가 아무리 많아도 시간이 충분하다면 항상 원하는 원소를 찾을 수 있다는 장점이 있다. 리스트에 특정 값이 있는지 순차적으로 조사하기 체크하여 찾기 때문에 구현이 간단하다. 리스트 자료형의 Count() 메서드는 내부적으로 순차탐색을 통해서 수행이 된다. 가장 앞에 있는 원소부터 하나씩 확인하므로 시간 복잡도는 O(N)이다. 순차 탐색 소스코드 ( py ) def sequent.. 2021. 8. 4.
Greedy 주로 교제에서 "탐욕법"이라고 소개되는 그리디(Greedy) 알고리즘은 단순하면서 강력한 해결 방법이다. 탐욕법이라고 불리는 이유는 미래 상황을 생각하지 않고 단순히 현재 상황에서 제일 최선의 것을 고르기 때문이다. 즉 현재의 상황에서만 고려하고 이 선택이 미래에 불러올 영향에 대해서는 전혀 고려하지 않는다. 그리드 알고리즘은 최적의 해를 도출한 가능성이 낮다. 현재의 상황에 대해서만 판단하기 때문에 주기가 긴 코드에 대해서 현재의 선택이 미래에 악영향을 끼칠 가능성이 크기 때문이다. 따라서 그리디 알고리즘을 통해서 문제해결책을 세웠다면, 그 해법이 옳은지 검증해야 한다. 아래에 나올 동전 문제에 대해서는 동전 중 큰 단위가 항상 작은 단위의 배수임이 확신되므로, 작은 단위의 동전을 종합해 다른 해가 나.. 2021. 7. 25.
반응형