100보다 크거나 같은 값 바로 앞에 있는 값은 어떻게 될지 고민해보면 좋을거 같습니다.
보통은 lower_bound 이터레이터를 --해서 쓰거나, (간단한 문제인 경우) data를 전부 -1배 해서 넣고 lower bound를 씁니다.
@subinium 앗 그럴수도 있었겠지만 뭔가 함수도 알아보고 싶어서요..!!
@portableangel 이터레이터를 --......
뭔가
위에 로어바운드 쓴 부분을 int now = *(lower_bound(pivo,pivo+gesu,N)--);
이렇게 고쳤더니 컴파일 에러만 나는..ㅠㅠ... 혹시 어떻게 고쳐야 할지 알려주실 수 있을까요(?!
-- 연산자를 후위 말고 전위로 옮기시면 됩니다.
대신 N보다 작은 수가 없을 경우엔 큰일이 납니다.
그걸 방지하기 위해서는 N보다 작은 수가 있는지 미리 한 번 체크하고 들어가시면 됩니다. 컨테이너 내의 최소값과 N을 한번 비교해서 예외처리하면 돼요
어 그런데 배열이네요.. 여기선 --를 저런 방식으로는 못 쓸거 같네요
set이나 map에서 가능합니다.
이렇게 사용하면 되긴 하네요..
예외처리는 필요할것 같습니다.
댓글을 작성하려면 로그인해야 합니다.
kyaryunha 5년 전
upperbound나 lowerbound의 반대는 무엇인지 궁금합니다.
음ㅁ... 반대라고 하긴 좀 애매하고...
둘다 예를들어 100을 넣으면, 100보다 크거나 같은값, 혹은 큰 값을 찾아주는 것이잖아요.
혹시 그런게 아니라,배열에서 100보다 작은값중 가장 큰값.. 이런걸 찾아주는 함수는 없는지 궁금합니다..!!
뭔가 검색하면 다 어퍼바운드랑 로워바운드만 나와요 ㅠㅠ... 정녕 없는것일까요...
뭔가 굳이 문제와 관련된것도 아니며 못풀어서 질문하는것이 아니고, 그냠 함수 있는지 궁금해서 올리는 질문 글이라서
문제 번호는 공란으로 두지만..
일단 아래 코드는
https://www.acmicpc.net/proble...
의 짜다만 코드입니다......
100을 입력하면, 그것보다 큰 피보나치인 144를 찾아주고 있습니다.......
제가 찾고 싶은건 144가 아니라 100보다 쪼마나거나 같은 피보나치인데 말이죠..+ㅁ+......
물론 어퍼나 로워 안쓰고 그냠 노가다로 풀 수는 있겠지만 뭐 함수 연습할겸 +ㅁ+......