개인적으로 알고리즘이 가장 어렵다고 느껴져서 14일동안 진행되는 leet코드 연습을 시작 하였다.
우리가 알고 있는 탐색이다.
하지만 효율성을 고려하여 배열을 전체적으로 탐색 하는 것은 안되고 log n
만큼만 탐색을 진행 하여야 한다.
일단 중간값을 비교를 하면서 중간의 index
가 내가 찾고자 하는 target보다 큰지 작은지를 판별해 값을 변형 시켜 준다.
그러다가 left가 right보다 같거나 커지는 경우가 생기는데 이때에는 배열 안에 값이 없는 것이다.
일단 기본 탐색보다는 탐색 범위는 반으로 줄일수가 있다.
좀더 시간복잡도를 줄일수 있는 코드를 보자면
이와 같다.
문제는 다르지만 형식은 같은 문제이다.
따로 if문을 통해서 left와 right를 비교를 했지만 이렇게 while문의 조건으로도 사용을 할수가 있다.
이 문제 같은 경우에는 규칙을 찾아서 left를 반환 시켜 주었다
아직 까지는 알고 있는 내용이라서 별다른 어려움 없이 해결 했다고 생각한다