Algorithm3 [Algorithm][Kotlin] LRU 알고리즘 캐시자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 저장소로, 리소스에 대한 중복 요청을 막거나 바뀌지 않는 데이터를 새로 불러오는 비용을 줄이기 위해 사용된다. [CS] 캐시 (Cache)캐시 (Cache)자주 사용하는 데이터나 값을 미리 복사해 놓는 임시 장소저장 공간이 작고 비용이 비싼 대신 빠른 성능을 제공한다.아래와 같은 경우에 사용을 고려하면 좋다.접근 시간에 비해 원래dev-baik.tistory.comLRU(Least Recently Used) 알고리즘가장 오랫동안 사용되지 않은 데이터를 제거하여 새로운 데이터를 저장하는 방식으로, 메모리 사용량을 효율적으로 관리할 수 있도록 도와준다.최근에 사용되지 않은 데이터는 앞으로도 사용될 가능성이 낮기 때문에, 데이터에 대한 접근 시간을 기록하.. 2024. 11. 10. [Algorithm][Kotlin] 정렬 알고리즘 (선택, 삽입, 버블, 퀵, 병합) 정렬 (sorting)어떤 데이터들이 주어졌을 때 이를 정해진 순서대로 나열하는 것val dataList = (0..99).shuffled().take(10).toIntArray()println("Before sorting: ${dataList.joinToString(", ")}") 선택 정렬 (Selection Sort)1. 주어진 리스트 중에 최소값을 찾는다.2. 해당 최소값을 데이터 맨 앞에 위치한 값과 교체한다.3. 맨 처음 위치를 뺀 나머지 데이터를 같은 방법으로 교체한다.시간 복잡도average, worst : O(N²) (구현이 간단하지만 비효율적)공간 복잡도제자리(In-place) 알고리즘 (기존 배열 외에 추가적인 메모리를 거의 사용하지 않는다)안전성불안전정렬 (정렬을 수행할 때 동일한 .. 2024. 8. 22. [Algorithm] 동적 계획법 (Dynamic Programming, DP) 동적 계획법 (Dynamic Programming, DP)복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법한 가지 문제에 대해서, 단 한 번만 풀도록 만들어주는 알고리즘즉, 똑같은 연산을 반복하지 않도록 만들어준다.실행 시간을 줄이기 위해 많이 이용되는 수학적 접근 방식의 알고리즘주어진 문제를 풀기 위해서, 문제를 여러 개의 하위 문제로 나누어 푼 다음, 그것을 결합하여 최종적인 목적에 도달하는 것하나의 큰 문제를 여러 개의 작은 문제로 나누고, 각 문제의 결과를 저장하여 다시 큰 문제를 해결하는 데 사용한다.일반적인 재귀를 단순히 사용 시 동일한 작은 문제들이 여러 번 반복되어 비효율적인 계산될 수 있다.예를 들어 피보나치 수를 구하고 싶을 때 재귀로 함수를 구성하면 O(2ⁿ) 으로, 동적 계획.. 2024. 8. 20. 이전 1 다음