백준

백준 : 10816번 숫자 카드 2(c++)

TIN9 2023. 10. 27.
반응형

백준 링크

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

 

10816번: 숫자 카드 2

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

www.acmicpc.net

코드 풀이

  • 입력으로 주어진 N과 각각의 값들을 저장
  • 저장된 vecNumber값을 정렬
  • 입력으로 주어진 M만큼 반복문 실행
  • 탐색할 값을 cin으로 구한 뒤 upper_bound, lower_bound 알고리즘 함수를 활용하여 탐색 값의 인덱스 끝 + 1, 시작값을 구하여 빼주어 최종적인 정답을 도출

코드

#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

int main() 
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);

    int N, M;
    cin >> N;
    vector<int> vecNumber;
    vecNumber.resize(N);

    for (int i = 0; i < N; ++i)
    {
        cin >> vecNumber[i];
    }

    sort(vecNumber.begin(), vecNumber.end());

    cin >> M;

    for (int i = 0; i < M; ++i)
    {
        int Value;
        cin >> Value;

        cout << upper_bound(vecNumber.begin(), vecNumber.end(), Value) - 
            lower_bound(vecNumber.begin(), vecNumber.end(), Value) << ' ';
    }

    return 0;
}
반응형

댓글