문제 원본 : https://codeup.kr/problem.php?id=3130
소들의 헤어스타일
첫번째 줄에 소의 수 N이 입력된다.(1 <= N <= 80,000) 두 번째 줄 부터 N+1번째 줄까지 각 소들의 키가 입력된다. ( 1 <= hi <= 1,000,000,000 )
codeup.kr
출처 : USACO 2006 November 2006 Contest Silver 1번

풀이법은 다음과 같습니다.
현재 확보된 시야를 저장할 배열을 선언합니다. (본문에서 int형 배열 build)
입력받을 빌딩의 개수를 저장한 후 각 빌딩의 높이를 입력받습니다.
그 후 lower bound를 이용하여 수정된 시야를 저장합니다. (본문에서 int형 배열 last)
이 때 일반적인 lower bound가 아닌 compare를 정의하여 역방향으로 확인하는 lower bound를 사용합니다.
수정된 시야에 위치한 높이로 build 배열의 값을 업데이트합니다.
lower bound로 last를 업데이트 한 후 바뀐 last들을 모두 합하면 정답을 얻을 수 있습니다. (본문에서 int형 변수 tot)
p.s. 위와 같이 lower bound를 이용한 풀이 말고 stack을 이용한 풀이도 있습니다.
댓글