Binary Search는 꼭 정렬된 배열에서만 사용해야 할까?
·
Algorithm/내용 정리
❐ Description[LeetCode#162] Find Peak Element 문제를 풀면서 단순하게 생각했던 부분을 바로 잡자.     ❐ Find Peak Element 이진 탐색이란 오름차순으로 정렬된 리스트에서 단조성을 이용해 특정값을 찾는 알고리즘이다. (wiki 링크)단조성이란? 값이 한 방향으로 증가하거나 감소하는 특성 그래서 이 문제를 처음에 접근할 때 이진 트리를 어떻게 사용하라는 거지? 라는 생각을 헀다.왜냐면 주어진 배열은 오름차순이 아니기 때문이다. 하지만 해당 문제의 요구사항 중 하나는`O(logN)`의 시간 복잡도로 풀이를 하는 것이다.     ❐ 정렬되어 있지 않아도 Binary Search를 적용할 수 있다.위에서 단조성에 대해서 이야기 했다. 그럼 다음 배열은 단조성을 ..
[LeetCode#2517] Maximum Tastiness of Candy Basket
·
Algorithm/문제풀이
❐ Description이번 문제는 Binary Search + Greedy로 해결하는 문제였다.백준으로 치면 실버1~골드4 사이의 난이도 이번 문제에서 문제의 조건이 단조성을 가지기 때문이다. 단조성은 특정 조건이 증가하거나 감소함에 따라결과가 변하지 않고 일정한 방향으로 변화하는 성질을 의미한다.  이와 유사한 문제로 최근에 풀어본 [Path With Minimum Effort] 문제가 있다.     ❐ 접근 방식이분 탐색을 위해 주어진 price 배열을 오름차순 정렬한다.이분 탐색 초기화 최솟값(0)과 최댓값(price 배열 내 최대값 - 최소값) 사이에서 탐색하며 가능한 최적의 답을 찾는다.이분 탐색 수행중간 값 mid를 계산하고, tastiness가 mid일 때 k개의 사탕을 선택할 수 있는지 ..