본문 바로가기
반응형

분류 전체보기161

슬라이딩 윈도우 알고리즘 슬라이딩 윈도우는 고정된 크기의 윈도우가 이동하면서 윈도우 내에 있는 데이터를 이요해 문제를 풀이하는 알고리즘이다.슬라이딩 윈도우는 네트워크 전송계층의 TCP프로토콜에서 흐름제어를 사용하는 방식을 알고리즘 문제 풀이에 응용한 경우이다. 슬라이딩 윈도우 최적화주어진 배열 중 연속된 k개의 크기를 갖는 부분집합을 처음부터 끝까지 이동하면서 부분집합 내의 최대값 결과 집합을 반환하시오.[1, 3, -1, -3, 5, 6, 8] 결과: 윈도우최댓값[1 3 -1] -3 5 6 831 [3 -1 -3] 5 6 831 3 [-1 -3 5] 6 851 3 -1 [-3 5 6] 861 3 -1 -3 [5 6 8]8.. 2025. 6. 14.
팰린드롬 팰린드롬은 순서를 거꾸로 읽었을 때도 원래의 문자열이나 수열과 동일한 경우 1. 투포인터 방식public static boolean isPalindrome(String str) { int left = 0; int right = str.length() - 1; while (left 2. 문자열을 뒤집는 방식public static boolean isPalindrome(String str) { String reversed = new StringBuilder(str).reverse().toString(); return str.equals(reversed);} 시간복잡도는 모두 O(N)으로 동일하지만투포인터는 N/2이고, 문자열을 뒤집는 경우 2N이고 문자열 뒤집기는 새로운 문자를 .. 2025. 6. 14.
이진탐색 이진탐색(BinarySearch)정렬된 배열에서 타깃을 원하는 요소를 찾는 알고리즘시간복잡도 O(logN)이진탐색트리와 이름이 비슷하지만 이진탐색트리는 정렬된 요소를 저장하고 탐색하는 자료구조라면,이진탐색은 정렬된 배열에서 값을 찾아내는 알고리즘이다. [이진탐색 과정]1부터 100이 주어진 배열에서 77 찾기1차 탐색1...50...1002차 탐색50...75...1003차 탐색75...81...874차 탐색75...78...815차 탐색75...76...786차 탐색76...77...78 [이진탐색 java 코드]public static int binarySearch(int[] arr, int target) { int left = 0, right = arr.length - 1; while (.. 2025. 6. 14.
허프만 코딩 허프만 코딩문자의 빈도를 이용해 압축하는 방법으로 빈도가 높은 문자는 적은 비트로, 빈도가 낮은 문자는 높은 비트로 표현하여 필요한 비트 수를 줄여 압축하는 방식(-> 높은 압축률)문자열 압축을 위해 허프만 트리를 사용함각 문자에 대한 출현 빈도수를 구하여 내림차순으로 정렬한 뒤 빈도수가 가장 낮은 두 값을 자식 노드로, 빈도수의 합을 부모노드로 하는 연산을 반복적으로 수행하여 트리를 구성함허프만 트리를 구성하면 모든 문자열은 리프노드에 위치함왼쪽가지를 1, 오른쪽 가지를 0으로 표현하여 리프노드(문자열)에 노드에 도달하는데 거쳐가는 비트로 문자열 표기-> 문자열이 모두 리프노드에 위치하므로 문자열 간에 접두부가 겹치지 않음-> 문자열을 표현하는데 겹치는 비트가 없으므로 압축 이후 데이터 손실이 발생하지.. 2025. 6. 12.
반응형