kyaryunha   5년 전

upperbound나 lowerbound의 반대는 무엇인지 궁금합니다.

음ㅁ... 반대라고 하긴 좀 애매하고...

둘다 예를들어 100을 넣으면, 100보다 크거나 같은값, 혹은 큰 값을 찾아주는 것이잖아요.

혹시 그런게 아니라,배열에서 100보다 작은값중 가장 큰값.. 이런걸 찾아주는 함수는 없는지 궁금합니다..!!

뭔가 검색하면 다 어퍼바운드랑 로워바운드만 나와요 ㅠㅠ... 정녕 없는것일까요... 

뭔가 굳이 문제와 관련된것도 아니며 못풀어서 질문하는것이 아니고, 그냠 함수 있는지 궁금해서 올리는 질문 글이라서

 문제 번호는 공란으로 두지만..

일단 아래 코드는

https://www.acmicpc.net/proble...

짜다만 코드입니다......
100을 입력하면, 그것보다 큰 피보나치인 144를 찾아주고 있습니다.......

제가 찾고 싶은건 144가 아니라 100보다 쪼마나거나 같은 피보나치인데 말이죠..+ㅁ+......

물론 어퍼나 로워 안쓰고 그냠 노가다로  풀 수는 있겠지만 뭐 함수 연습할겸 +ㅁ+......

subinium   5년 전

100보다 크거나 같은 값 바로 앞에 있는 값은 어떻게 될지 고민해보면 좋을거 같습니다.

portableangel   5년 전

보통은 lower_bound 이터레이터를 --해서 쓰거나, (간단한 문제인 경우) data를 전부 -1배 해서 넣고 lower bound를 씁니다.

kyaryunha   5년 전

@subinium 앗 그럴수도 있었겠지만 뭔가 함수도 알아보고 싶어서요..!!

@portableangel  이터레이터를 --...... 

뭔가

위에 로어바운드 쓴 부분을  int now = *(lower_bound(pivo,pivo+gesu,N)--);

이렇게 고쳤더니 컴파일 에러만 나는..ㅠㅠ... 혹시 어떻게 고쳐야 할지 알려주실 수 있을까요(?!

portableangel   5년 전

-- 연산자를 후위 말고 전위로 옮기시면 됩니다.

대신 N보다 작은 수가 없을 경우엔 큰일이 납니다.

그걸 방지하기 위해서는 N보다 작은 수가 있는지 미리 한 번 체크하고 들어가시면 됩니다. 컨테이너 내의 최소값과 N을 한번 비교해서 예외처리하면 돼요

portableangel   5년 전

어 그런데 배열이네요.. 여기선 --를 저런 방식으로는 못 쓸거 같네요

set이나 map에서 가능합니다.

portableangel   5년 전

이렇게 사용하면 되긴 하네요..

예외처리는 필요할것 같습니다.

kyaryunha   5년 전

ah 배열..... 그치만 위치를 반환한다는 사실을 잊고 있었던.... pivo[로워-배열앞값] 하니깐 다시 되는..!!! ((행복..!! 알려주셔서 감사합니댜..!! 

헉 STL초보인 저는 그런 어려운 STL은 모르는..... 

헉ㄱ 혹시 vector나 stack이나 queue나 priorityqueue에서도 ㅅ ㅏ용 가능한가요..?!?!?!?!

kyaryunha   5년 전

앗 뭔가 답글 순서 12분전꺼를 보고 답글했더니 7분전께 새로 뜨는...!!

알려주셔서 감사합니댜...!! 아ㅏ... int 다음에 &말고 *도 붙일 수있군요....!!!!((신세계..!! 알려주셔서 감사합니다..!!!! 

댓글을 작성하려면 로그인해야 합니다.