전체 글

알고리즘/알고리즘 설명 및 예제

[알고리즘] 그리디 알고리즘

그리디 알고리즘 현재의 선택이 나중에 미칠 영향을 고려하지 않고, 각 단계에서 가장 최선의 선택을 하는 기법이다. 그리디 알고리즘은 100% 최적해를 보장해주지 않고, 어느 정도 적합한 수준의 해답을 알려준다. 시간 복잡도가 낮아 계산 속도가 정확한 알고리즘에 비해서 빠른 경우가 많기 때문에 실용적으로 사용 가능하다 그리디 알고리즘 구조 현재 상태에서의 최적의 해답을 선택한다. 선택한 해가 문제의 조건을 만족하는지 검사한다. 문제가 해결되었는지 검사하고, 해결되지 않았다면 1번 과정으로 돌아가 위의 과정을 반복한다. 그리디 알고리즘 사용 조건 탐욕 선택 속성 : 앞의 선택이 이후의 선택에 영향을 주지 않습니다. 최적 부분 구조 : 전체 문제의 최적해가 부분 문제의 최적해로 구성되야 합니다. 그리디 알고리..

알고리즘/알고리즘 설명 및 예제

[알고리즘] 투 포인터 알고리즘

투 포인터 알고리즘 리스트에 순차적으로 접근해야 할 때 두 개의 점의 위치를 기록하면서 진행하는 알고리즘입니다. 완전탐색 알고리즘 등을 사용하여 문제에 접근할 경우 테스트 케이스에 큰 값(엄청 긴 배열이나 범위)이 나오면 시간 초과가 걸리는 경우가 있습니다. 이 때 투 포인터를 사용하면 메모리와 시간 효율성을 높일 수 있습니다. 시간복잡도 O(N)으로 O(N^2) 인 이중 for문 보다 효율적이다. 사용방법 1. 두 개의 포인터가 배열의 시작점에서 같이 출발하며, 빠른 포인터(fast runner)가 느린 포인터(slow runner)보다 앞서서 진행하는 방식 2. 배열 시작점에서 시작하는 포인터와 끝에서 시작하는 포인터로 진행하는 방식

_차누_
탄탄한 개발자 성장일지