본문 바로가기

이진탐색4

백준 [자바 java] 공유기 설치 https://www.acmicpc.net/problem/2110 2110번: 공유기 설치 첫째 줄에 집의 개수 N (2 ≤ N ≤ 200,000)과 공유기의 개수 C (2 ≤ C ≤ N)이 하나 이상의 빈 칸을 사이에 두고 주어진다. 둘째 줄부터 N개의 줄에는 집의 좌표를 나타내는 xi (0 ≤ xi ≤ 1,000,000,000)가 www.acmicpc.net 오랜만에 백준이다! 코드트리를 통해서 개념을 어느정도 익혔으니 실전에 적용해보는 연습을 슬슬 해보려고 한다. 이 문제는 내가 5개월 전에 시도했다가 못풀었던 문제이다. 집의 위치와 공유기의 수가 주어지고, 이를 적절하게 배치해서 공유기가 설치된 집 사이의 가장 가까운 거리가 최대가 되도록 해야한다. 이 문제는 이진탐색으로 풀었고, lowerBou.. 2023. 9. 14.
코드트리 [자바 java] 자연수 n개의 합 https://www.codetree.ai/missions/8/problems/sum-of-n-natural-numbers?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai s가 주어지고, 1부터 n까지의 합이 s가 넘지 않는 n의 최댓값을 구하는 문제이다. 나는 이진탐색으로 위 문제를 풀었다. 기본적인 이진탐색과 같이 왼쪽, 오른쪽을 의미하는 변수를 설정하고, 중간값을 계속해서 탐색하며 중간값의 합이 s보다 작으면 left를 갱신하고, s보다 크면 right를 갱신했다. 1부터 mid.. 2023. 9. 10.
[알고리즘 개념] 이진탐색 이진탐색은 원하는 수를 배열에서 탐색하고자 할 때, O(logN)으로 효율적인 탐색을 할 수 있게 해주는 알고리즘이다. 이진탐색은 배열의 처음과 끝을 직접 수정해나가며 원하는 값을 찾는 과정을 거친다. 이진탐색의 기본적인 과정 배열을 오름차순으로 정렬한다. 탐색할 배열의 처음과 끝을 의미하는 변수를 설정한다.(left, right) left와 right의 가운데 값(mid) 과 탐색하는 값을 비교한다. 크다면 -> left를 mid + 1로 수정한다.(mid보다 작은 쪽에는 원하는 값이 없는게 확실하니까) 작다면 -> right를 mid - 1로 수정한다.(mid보다 큰 쪽에는 원하는 값이 없는게 확실하니까) 만약 mid값과 탐색중인 값이 동일하면 index를 출력하고 종료한다(탐색 성공) 위 과정을 w.. 2023. 9. 10.
코드트리 [자바 java] 숫자 빠르게 찾기 https://www.codetree.ai/missions/8/problems/find-number-fast?&utm_source=clipboard&utm_medium=text 코드트리 | 코딩테스트 준비를 위한 알고리즘 정석 국가대표가 만든 코딩 공부의 가이드북 코딩 왕초보부터 꿈의 직장 코테 합격까지, 국가대표가 엄선한 커리큘럼으로 준비해보세요. www.codetree.ai 이 문제는 배열 내에서 이진탐색을 이용해서 주어진 수를 빠르게 찾아 출력해야합니다. 나는 일반적인 이진탐색 방법으로 문제를 풀었다. 우선, 배열에 주어진 수를 배열에 넣고 정렬했습니다. 그 다음, 현재 탐색하고 있는 부분배열의 왼쪽과 오른쪽을 나타내는 변수를 각각 설정한 다음 이 두 인덱스의 가운데 값을 원하는 값과 비교해서 더 .. 2023. 9. 8.