이진 탐색(2)
-
[백준 1300][파이썬] K번째 수
https://www.acmicpc.net/problem/1300 1300번: K번째 수 세준이는 크기가 N×N인 배열 A를 만들었다. 배열에 들어있는 수 A[i][j] = i×j 이다. 이 수를 일차원 배열 B에 넣으면 B의 크기는 N×N이 된다. B를 오름차순 정렬했을 때, B[k]를 구해보자. 배열 A와 B www.acmicpc.net 이진 탐색으로 해결할 수 있다. 1. 배열의 가장 작은 값(low)과 가장 큰 값(high)의 중간 값(mid)부터 탐색을 시작한다. 2. 해당 값보다 작은 값의 개수와 같은 값의 개수를 구한다. 3. k가 mid 값보다 작은 값의 개수와 해당 값과 같은 값의 개수 사이에 존재한다면 mid를 출력하고 끝낸다. 4. k가 mid 값보다 작은 값의 개수보다 작거나 같다면..
2023.03.03 -
[백준 2110][파이썬] 공유기 설치
https://www.acmicpc.net/status?user_id=sungmin123&problem_id=2110&from_mine=1 채점 현황 www.acmicpc.net 이진 탐색으로 푸는 문제이다. 먼저 좌표를 정렬한다. 거리의 최솟값(low)은 1이고 거리의 최댓값(high)은 첫 번째 집부터 마지막 집까지의 거리이다. 두 값이 인자로 들어오면 그 중간값(mid)을 구하고 중간값이 조건에 부합하는지 확인한다. 부합한다면 첫 번째 인자로 mid+1, 두 번째 인자로 high를 넣어주고 다시 한 번 이진 탐색을 수행한다. low>high가 되는 순간 멈춘다. 이 문제에서 조금 까다로운 부분이 중간값이 조건에 부합하는지 확인하는 방법이다. 가장 인접한 두 공유기 사이의 거리가 중간값보다 크거나 같..
2023.03.02