맛동산이

(백준 10816 c++) 숫자카드 2 본문

알고리즘/백준

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

진ddang 2022. 7. 7. 16:38

문제

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

 

10816번: 숫자 카드 2

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

www.acmicpc.net

정답코드

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

using namespace std;

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int n, m;
    cin >> n;
    int number1, number2;
    vector<int> arr1;

    for (int a = 0; a < n; a++)
    {
        cin >> number1;
        arr1.push_back(number1);
    }
    sort(arr1.begin(), arr1.end());
    cin >> m;
    for (int a = 0; a < m; a++)
    {
        cin >> number2;
        auto upper = upper_bound(arr1.begin(), arr1.end(), number2);
        auto lower = lower_bound(arr1.begin(), arr1.end(), number2);
        cout << upper - lower << " ";
    }
}

해설

처음에는 multiset에 count를 사용해서 해결하려고 했는데 틀렸다고 나와서 보니 시간복잡도가 O(n)이었음,

그리고 그냥 sort 하지않고 set을사용해서 자동으로 정렬하려고 했는데 그것도 오류남.

결국 백터를사용했고, upper lower_bound했는데, 이것도 시간초과남.

그래서 시간줄이는 방법으로 ios:: 저거 썼더니 패스.

ios::sync_with_stdio(false);
cin.tie(NULL);

 

반응형

'알고리즘 > 백준' 카테고리의 다른 글

백준) 2231 분해합 [Swift]  (0) 2023.08.09
백준) 2839 설탕배달 [Swift]  (0) 2023.08.09
(백준 2164 c++) 카드2  (0) 2022.07.05
(백준 9012 c++) 괄호  (0) 2022.07.05
(백준 1764) 듣보잡  (0) 2022.06.29