[C++] 백준 10816 : 숫자 카드 2
#include <iostream>
#include <vector> // vector 사용
#include <algorithm>
using namespace std;
int main(int argc, char **argv){
int N, M;
int x;
scanf("%d",&N);
vector<int> v(N); // N 크기의 벡터 생성
for(int i=0; i<N; i++){
scanf("%d",&v[i]); // 상근이 값 입력받기
}
sort(v.begin(), v.end()); // vector의 시작과 끝으로 정렬
scanf("%d", &M);
for(int i=0; i<M; i++){
scanf("%d", &x);
auto low = lower_bound(v.begin(), v.end(), x); // auto : 타입 추론, 매개변수에는 사용 불가
auto up = upper_bound(v.begin(), v.end(), x);
//upper_bound : binary search로 해당 숫자가 끝나는 위치 반환
//lower_bound : binary search로 해당 숫자가 시작하는 위치 반환
printf("%ld ", up - low);
}
return 0;
}
오늘의 키포인트
-
처음으로 lower_bound, upper_bound STL과 vector를 사용해보았다. 아직 미숙해서 인터넷을 열심히 찾아보았다. 다음에 보지 않고 풀어보기 필수.
-
vector를 sort 할 때는 시작과 끝을 v.begin(), v.end()를 사용한다.
-
upper_bound : binary search로 해당 숫자가 끝나는 위치 반환 (주어진 값보다 크거나 같으면서 제일 작은 값)
lower_bound : binary search로 해당 숫자가 시작하는 위치 반환 (주어진 값보다 크면서 제일 작은 값) -
C++에는 auto라고 타입 추론하는 변수형이있다. 매개변수에는 사용이 불가능하다. 하지만 주소를 저장할때는 참 좋은 것 같다.
Author And Source
이 문제에 관하여([C++] 백준 10816 : 숫자 카드 2), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@lamknh/C-백준저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)