문제 n개의 보석의 무게(m)와 가격(v) 정보가 주어지고, m개의 가방이 최대 담을 수 있는 무게(c) 정보가 주어졌을 때, 가질 수 있는 보석의 최대 가격을 구하는 문제이다. 이때 한 개의 가방에는 한 개의 보석만 넣을 수 있다. 풀이 우선순위 큐를 사용하여 문제를 풀 수 있다. 보석과 가방의 무게를 비교하고 담을 수 있는 보석이라면 가장 큰 가격의 보석을 담도록 하는 것이다. 먼저 보석의 정보를 얻을 때, 같은 무게를 가진 보석이 다수 존재할 수 있음으로 딕셔너리 자료구조에 담는다. 딕셔너리로 관리하는 것이 메모리가 조금 늘지만 더 빠른 속도를 보여준다. 한 개의 가방에는 한 개의 보석만 들어가기 때문에 보석의 최대 무개(1000000)와 비교해서 넘어가는 것은 최대 무게로 대체한다. 보석의 무게가..
문제주어진 용액들 중에서 세 개를 선택해 특성 값의 합이 0에 가까운 조합을 찾는 문제이다.풀이정렬과 투 포인터 기법을 활용해 문제를 풀 수 있다.먼저 주어진 용액들의 정보를 오름차순으로 정렬하면 더 효율적으로 조합을 찾을 수 있다.세 개의 용액 중 한개를 임의로 고정하고 나머지 두 용액을 투 포인터로 탐색한다.첫번째 포인터(left)는 고정된 용액 바로 다음 위치를 가리킨다.두번째 포인터(right)는 정렬된 배열의 최대값인 오른쪽 끝을 가리킨다.세 원소의 합이 0보다 크면 오른쪽 포인터를 왼쪽으로 이동시켜 더 작은 값을 선택하게 한다.합이 0보다 작으면 왼쪽 포인터를 오른쪽으로 이동시켜 더 큰 값을 선택하게 한다.만약 0과 같으면 해당 조합이 최고의 조합임으로 해당 조합을 저장하고 탐색을 종료할 수..