이진 탐색(Binary Search)은 정렬된 배열이나 리스트에서 특정 값을 빠르게 찾기 위해 사용하는 효율적인 탐색 알고리즘입니다. 이진 탐색의 원리는 배열을 절반씩 나누어 검색 범위를 줄여 나가며 원하는 값을 찾는 것입니다.정렬된 배열 필요: 이진 탐색은 배열이 정
배열이나 문자열에서 특정 구간의 합이나 빈도를 빠르게 계산할 때 매우 유용합니다. 특히 다수의 쿼리를 처리하는 문제에서 시간 복잡도를 개선하는 데 큰 효과가 있습니다.원본 배열을 기반으로 누적합 배열을 만듭니다.누적합 배열i = 누적합배열i-1 + 원본배열i구간 합은
(sj%M)-(si-1%M)==0 ----> M의 배수(sj-si-1)%M==0⭐️ sj=si-1 ⭐️-----> 나머지가 같다🏷️ nC2 -----> 나머지가 같은 구간의 시작 / 종료 범위 조합 찾기
배열내 S/E 인덱스를 통해 구간의 변경하며 구간내 합을 구하는 알고리즘원본 배열 생성 -> 구하려는 값(15)의 연속된 숫자의 배열ex) {1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}start / end 인덱스 위치 0으로 초기화count:1 (
정렬된 배열이나 리스트에서 두 개의 포인터를 조작하여 원하는 값을 빠르게 찾는 기법왼쪽 포인터(L), 오른쪽 포인터(R) 두 개를 사용해서 특정 조건을 만족하는 구간을 탐색함배열 양쪽 끝에서 시작 → 서로 좁혀오면서 조건을 만족하는 값을 찾는 방식예제: 정렬된 배열에서
🎯 Bound(경계 설정) > ✅ 초과값 중 최소값 > ✅ 이상값 중 최소값
✅ mid \* (mid + 1) / 2$$SUM = N\*(N+1)\\over2$$$$N^2+N = 2\*SUM$$$$ N^2 = 2\*SUM \\N+1\\approx0$$$$ N = \\sqrt{2\*SUM}$$문제 : https://www.cod