본문 바로가기

알고리즘 문제

[C/C++ 백준 10816번] 숫자 카드 2 (Silver 4)

https://www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

근성없이 빠르게 검색해서 다른 사람의 코드를 참고했다,,

 

lower bound와 upper bound를 사용하는 풀이인데, 정말 괜찮은 방법 같다. 이분 탐색을 진행할 때 같은 원소가 여러 개 있을 경우, 해당 원소들중 가장 오른쪽의 값이나 왼쪽의 값을 선택할 수 있는 방법인데, 이 문제에서는 오른쪽의 값과 왼쪽 값의 차이를 이용해서 해당 카드의 개수를 구한다.

 

카드가 0장일때만 주의하여 문제를 해결하자.