[백준]8983 사냥꾼 [Python]
·
알고리즘/백준
이 문제는 이분탐색을 이용하여 새의 좌표가 사냥꾼 배열 arr=[1,4,6,9] 에서 잡을 수 있는 거리인지 확인하고 잡을 수 있으면 카운트하는 문제입니다. 우선 사냥꾼의 사정거리 L을 이용해서 사냥꾼이 새를 잡을 수 있는 범위를 구합니다. 사정거리의 범위는 L-Y(새의 Y좌표)를 X(새의 X좌표)에서 +, - 했을때가 범위입니다. 예를들어 첫번째 새의 경우 (7,2)니까 사정거리 4일경우 4-2의 값을 X값에 더하고 빼줍니다. 그러면 (5,2) ~ (9,2) 사이의 x좌표값에서는 해당 새를 잡을 수 있게됩니다. 이 부분을 활용해서 반복문으로 새를 호출해서 사냥꾼이 잡을 수 있는 새인지 아닌지 확인합니다. 이분 탐색과 반복문을 통해서 풀이한 코드입니다.
[백준]2110 공유기 설치 [Python]
·
알고리즘/백준
문제를 살펴보면 집의 개수 N, 공유기 개수 C가 있고 N개의 집의 개수가 주어졌을때 공유기 사이의 최대 거리를 구하는 문제입니다. 이 문제에서 중요한 점은 입력으로 받은 값들을 배열에 저장하고 오름차순으로 정렬시킨다음에 start와 end를 최소거리와 최대거리로 설정을하고 시작해야합니다. 우선 start는 시작점인 1로 설정하고 end는 가장큰 9에서 작은1사이의 거리이므로 8이됩니다. -> arr[-1] - arr[0] 위의 코드는 while문 코드인데 처음에 mid값을 start와 end의 중간값으로 설정합니다. 그리고 현재 위치를 의미하는 cur변수에 arr배열의 첫번째 값을 넣습니다. start가 1로 시작하므로 cnt도 1로 시작합니다. (1번집에 공유기를 이미 설치했다고 가정) 이제 for문..
[알고리즘] 이분 탐색(Binary Search)
·
알고리즘/개념
💡이분 탐색 알고리즘이란 이분 탐색 알고리즘은 정렬된 리스트에서 검색 범위를 반으로 줄여 나가면서 검색 값을 찾는 알고리즘입니다. 이분 탐색은 배열 내부의 데이터가 정렬(오름차순)되어 있어야만 사용할 수 있는 알고리즘이다. BigO : O(log N) 반드시 정렬된 상태에서 시작해야하므로 로그실행시간을 보장합니다. 구현에 필요한 데이터 Start : data의 처음 값 인덱스 Mid : Start, End 합의 중간 인덱스 End : data의 마지막 값 인덱스 Target : 찾고자 하는 값 data : 오름차순으로 정렬된 리스트 구현 방법 1. 리스트가 정렬된 상태인지 확인합니다. 2. start, end, mid, target 을 확입합니다. 3. 찾고자하는 target이 mid값보다 크면 오른쪽..
yunchan^.^
'이분탐색' 태그의 글 목록