upper_bound 와 lower_bound 함수는 정렬된 배열에서 원하는 값의 위치의 인덱스를 반환하는 함수 입니다.
#include <algorithm> 라이브러리에 존재합니다.
사용 예시입니다. 선행조건은 꼭 정렬되어있는 배열을 넣어야합니다.
int val = lower_bound(arr, arr + n, num ) - arr ;
int val = upper_bound(arr, arr + n, num ) - arr ;
위처럼 사용하고 lower_bound는 arr배열의 0~n까지중 num값인덱스 중 제일 작은 값을 반환 합니다.
upper_bound는 arr배열의 0~n까지중 num보다 큰 가장작은 값의 인덱스 값을 반환합니다.
즉 1 2 3 3 3 3 4 배열에서 num=2인 lowerbound는 1을 반환, upperbound는 2를 반환하는 형태입니다. (2값의 인덱스 1, 3값의 인덱스 2)
연습문제 링크:https://www.acmicpc.net/problem/3020
3020번: 개똥벌레
문제 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째 장애물은 항상 석순이고, 그 다음에는 종유석과 석순이 번갈아가면서 등장한다. 아래 그림은 길이가 14미터이고 높이가 5미터인 동굴이다. (예제 그림) 이 개똥벌레는 장애물을 피하지 않는다. 자신이 지나갈 구간을 정한 다음 일직선으로 지나가면서 만나는 모든 장애물을 파괴한다. 위의 그림에서 4번째 구간으로 개똥벌레
www.acmicpc.net
직접 이분탐색을 구현해서 풀어도 되지만 upper_bound, lower_bound 을 사용하는데 좋은 예제이기 때문에 가져왔습니다.
문제 해설:https://gusdnr69.tistory.com/59
[백준] 3020-개똥벌레(C++)
문제링크:https://www.acmicpc.net/problem/3020 3020번: 개똥벌레 문제 개똥벌레 한 마리가 장애물(석순과 종유석)로 가득찬 동굴에 들어갔다. 동굴의 길이는 N미터이고, 높이는 H미터이다. (N은 짝수) 첫 번째..
gusdnr69.tistory.com
화이팅입니다! :)
'프로그래밍 언어 > C++' 카테고리의 다른 글
c++ 우선순위 큐 priority_queue 사용법 (0) | 2020.07.29 |
---|---|
C++ sort함수 invalid comparator 오류 (0) | 2020.05.04 |
C++ memset 사용법 (0) | 2020.05.03 |
C++ math사용법 총정리 (0) | 2020.03.13 |
sort함수 사용법 (0) | 2020.03.13 |