> 기초/알고리즘
-
TIL-2024.02.17 - 알고리즘 - 완전 탐색 알고리즘 (Brute Force)> 기초/알고리즘 2024. 2. 17. 20:10
------- 완전 탐색 알고리즘 ? 문제의 가능한 모든 경우의 수를 체계적으로 생성하고 검사하여, 문제의 해답을 찾는 방식입니다. 복잡한 알고리즘을 적용하기 전에 문제 해결의 가능성을 탐색하거나, 문제의 규모가 작을 때 유용하게 사용됩니다. 장점: 구현이 비교적 간단하고 직관적입니다. 문제의 해를 반드시 찾을 수 있다는 보장이 있습니다(해가 존재한다면). 단점: 경우의 수가 매우 많을 때, 시간 복잡도가 매우 높아질 수 있습니다. 효율성이 낮아, 큰 규모의 문제나 시간 제한이 엄격한 문제에는 적합하지 않을 수 있습니다. 예제: Q) https://school.programmers.co.kr/learn/courses/30/lessons/86491 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션..
-
TIL-2024.02.14 -알고리즘-투포인터 알고리즘> 기초/알고리즘 2024. 2. 14. 22:45
배열이나 리스트 같은 선형 구조에서 두 개의 포인터를 사용하여 문제를 해결하는 방법입니다. 이 알고리즘은 주로 정렬된 배열이나 리스트에서 두 요소의 합이 특정 값에 해당하는 문제, 연속적인 데이터의 부분 합, 최소 길이 부분 배열 찾기 등에 활용됩니다. 투포인터 알고리즘의 핵심은 두 포인터가 서로 다른 속도로 움직이거나, 조건에 따라 한쪽 또는 양쪽 포인터가 이동하며 조건을 만족하는 해를 찾는 것입니다. 해당 알고리즘은 중첩 For 문을 써서 풀이도 가능하지만, 시간 복잡도 측면에서 다중 For문은 O(N^2)이지만, 투포인터 알고리즘은 배열을 한번만 순회하기 때문에 선형 시간 복잡도 O(n)을 가짐 투포인터 알고리즘의 기본 개념 시작 포인터(Start Pointer): 배열의 시작 부분을 가리킵니다. ..