본문 바로가기

Coding Test/알고리즘 정리5

[알고리즘] 이분탐색(Binary Search)이란? ✔️ 이분탐색(이진탐색) 이란?이분탐색이란 오름차순으로 정렬된 리스트에서 특정한 값의 위치를 찾는 알고리즘이다.  처음과 마지막의 중간값을 선택하여, 찾고자 하는 값과 크고 작음을 비교하는 방식을 반복하여 탐색을 진행한다.따라서, 필수조건은 리스트가 오름차순으로 정렬되어야만 한다.  그림으로 이분탐색에 대해서 더 자세히 알아보자 ! 0.길이가 10인 오름차순으로 정렬된 배열이 있다고 하자. 31 이란 특정한 값의 위치를 찾고자한다. 1.먼저 low, high, mid 값 설정한다. low : 최소값의 인덱스 high : 최고값 인덱스mid : 중간값 인덱스2.설정된 중앙값(mid)가 31보다 작으므로, low의 인덱스를 mid+1로 설정하여 우측을 선택한다.(만약 중앙값(mid)이 31보다 큰 경우라면,.. 2024. 10. 2.
[알고리즘] 백트래킹이란? & 대표 문제: 백준 15679 N과M(1) - 자바 ✔️ 백트래킹이란?백트래킹이란?해를 찾는 도중에 막히면 더이상 탐색하지 않고, 이전 단계로 되돌아가서(재귀) 해를 찾아나가는 기법을 의미한다. 백트래킹은 재귀적으로 문제를 하나씩 풀어가면서 현재 재귀를 통해 확인 중인 노드(상태)가 제한된 조건에 위배되는지 판단하고, 만약 해당 노드가 제한된 조건을 위배한다면 그 노드를 제외하고 다음 단계로 나아가는 방식이다. 이처럼 더 이상 탐색할 필요가 없는 상태를 제외하는 것을 가지치기(pruning) 이라고 한다.  따라서, 백트래킹은 모든 노드를 DFS를 통해 탐색하면서 더 이상 필요가 없는 부분을 쳐내는 가지치기(pruning)를 하는 것이다.  DFS 완전탐색으로 경우의 수를 찾아야할 경우, 불필요한 탐색을 건너뛸 여지가 있다면 백트래킹을 이용할 수 있다. .. 2024. 10. 1.
[알고리즘] LIS : Longest Increasing Subsequnce 알고리즘 - DP 활용(최장 증가 부분 수열) LIS (최장 증가 부분 수열)란, 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분 수열을 의미한다.  예를 들어, 아래의 그림처럼 수열 {10, 50, 20, 30, 10, 60} 이 있을 때,만들 수 있는 증가하는 수열은 { 10, 50, 60 } 그리고 { 10, 20, 30, 60 } 이다. (이때, 꼭 등차수열이거나 순서가 연속적일 필요는 없다.)이때, 가장 긴 증가하는 부분 수열(LIS)은 { 10, 20, 30, 60 } 임을 알 수 있다.  백준 11053번의 가장 긴 증가하는 부분 수열 의 예시로 알고리즘을 설명하겠다. https://www.acmicpc.net/problem/11053 1. DP 테이블 정의하기수열의 크기가 n인 배열이 입력으로 주어지면, 우리는 i 번째 원소의 LIS.. 2024. 8. 28.
[알고리즘 정리] DP(Dynamic Programming) : 동적 계획법 ✔️ DP(Dynamic Programming) 정의DP(Dynamic Programming) 이란?다이나믹 프로그래밍은 하나의 큰 문제를 여러 개의 작은 문제로 나눈 다음, 그 결과를 저장하여 다시 큰 문제를 해결할 때 사용한다.  ✔️ DP를 쓰는 이유DP는 일반적인 재귀(Recursion) 방식과 매우 유사하다.큰 차이점은 일반적인 재귀의 경우 큰 문제를 작은 하위 문제로 나누어 해결하는 방법으로, 작은 문제들이 여러번 반복(중복 계산)되어 비효율적인 계산이 될 수 있다.반면에, DP는 작은 하위 문제들로부터 시작하여 그 결과를 저장하고 이를 이용하여 큰 문제를 해결한다.즉, DP는 재귀적 호출에서의 중복 계산을 방지하고 계산 속도를 향상시킨다. ✔️ DP 기법을 적용시킬 수 있는 조건1. 중복되는.. 2024. 8. 24.
[알고리즘] 그리디 알고리즘(탐욕법) 정리 ✔️ 그리디 알고리즘(탐욕법) 정의그리디 알고리즘(Greedy Algorithm) 이란?최적의 값을 구해야 하는 상황에서, 각 단계에서 최적이라고 생각 되는 것을 선택해 나가는 알고리즘 입니다. 그리디 알고리즘은 각 단계마다 지역 최적의 해를 찾는 문제로, 문제를 더 작게 쪼개는 형태이다.  ➕ 언제 쓰는가?    최적해를 구하는 문제 !!    ✔️ 그리디 알고리즘으로 문제 해결하기선택 절차(Selection Procedure) : 현재 상태에서의 최적 해답을 선택한다.적절성 검사(Feasibility Check) : 선택된 해가 문제의 조건을 만족하는지 검사한다.해답 검사(Solution Check) : 문제가 해결되었는지 확인하고, 해결되지 않았다면 선택 절차로 되돌아간다. ✔️ 대표적인 문제백준 .. 2024. 8. 20.