k번째 수 2

[P2] 백준 7469번 K번째 수 C++ 세그먼트 트리, 이분 탐색, 머지 소트 트리

리뷰 https://www.acmicpc.net/problem/74696달만에 다시 들어와본 문제인데 쿼리문에서 merge없이 답을 도출할 방법을 고민해 보았다.  전역 변수N : 배열의 최대 크기를 저장할 상수 변수lst : 요소의 정보를 저장할 배열tree : 세그먼트 트리 정보를 저장할 벡터 배열n : 배열의 크기를 저장할 변수m : 쿼리의 개수를 저장할 변수 함수1. buildvoid build(int node, int s, int e) 세그먼트 트리 정보를 초기화 하기 위한 함수매개 변수로 노드 정보 node, 탐색 범위 s, e를 전달 받는다.리프 노드에 도달했을 경우 각 요소의 값으로 초기화 해준다.좌, 우 자식 노드로 재귀를 호출하며 두 노드를 merge하여 현재 노드에 정렬된 상태로 저장..

[G1] 백준 1300번 K번째 수 C++ 이분 탐색, 매개 변수 탐색, Parametric Search

리뷰 2차원 배열을 1차원 배열로 옮겨온 후 정렬한 값 중에서 k번째 수를 뽑는 특정 조건을 갖는 이분 탐색 문제 https://www.acmicpc.net/problem/1300 문제 풀이n, k값을 받아오고 left를 1, right를 n * n, result를 0으로 초기화 해준다. 해당 타입들은 모두 long long으로 설정left가 right를 넘지 않는 범위 내에서 while문 실행 mid를 left + right를 2로 나눈 몫으로, cnt를 0으로 초기화 해준다.1부터n까지 탐색하며 mid를 i로 나눈 값을 cnt에 추가해 준다, 이때 해당 값이 n보다 커선 안된다.탐색을 마친 후 cnt가 k보다 크거나 같으면 right 범위를 mid - 1로, 아니라면 left의 범위를 mid + 1로..

728x90