🧩 Dual-Pivot Quicksort
·
Java/알고리즘
핵심 개념Quicksort는 pivot 1개를 사용해 배열을 두 부분으로 나누지만, Dual-Pivot Quicksort는 pivot 2개를 사용해 배열을 세 부분으로 나눕니다.각 구간을 재귀적으로 정렬하는 고성능 분할 정복 기반 정렬 알고리즘입니다.Arrays.sort()에 사용되고 있습니다.분할 방식(Pivot 2개 → 3 구간)pivot1 배열을 다음 3개의 부분으로 나눔:arr[i] pivot1 ≤ arr[i] ≤ pivot2arr[i] > pivot2이 3개 구간을 각각 재귀적으로 정렬동작 절차 구현아래 소스는 이해를 위해 만든 로직입니다. Arrays.sort()와는 접근 방식이 다릅니다.결과값은 같습니다.void dualPivotSort(int[] arr, int left, int right..
동적계획법(DP, Dynamic Programming)
·
Java/알고리즘
1. 왜 만들어 졌을까?어원(When)Dynamic: 시간에 따라 변하는 걸 의미하는 것이 아님!Programming: 코드 작성이 아니라, 계획(Plan)을 짠다는 의미즉, 유동적으로 결정하는 계획 정도의 뜻누가 만들었나?Richard Bellman(리처드 벨만), 1950년대미 국방성 프로젝트 중 최적화 문제를 해결하기 위해 개발 왜? ‘Dynamic Programming’이라 이름 붙였나?벨만의 유명한 일화에 따르면:내가 일하던 국방 프로젝트는 ‘수학’이나 ‘과학’이라는 단어에 거부감을 가진 관리들이 있었지그래서 그들이 이해 못할 단어를 골라야 했어. 그래서 ‘다이내믹 프로그래밍’이라고 불렀지즉, 본래 의미보다 정치적 이유(!)로 지어진 네이밍…어떤 알고리즘이야?큰 문제를 작은 문제를 나눠서 푼 ..