Algorithm/BOJ

[c++][BOJ] 숫자 카드 2

kim-hasa 2021. 9. 30. 14:29

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

 

10816번: 숫자 카드 2

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

www.acmicpc.net

숫자카드 1번과 같지만 중복으로 들어온다는 문제가 있었습니다.

 

그냥 무식하게 배열에 때려넣고 풀긴 했는데 ,,, 다른 풀이를 많이 찾아봐야겠습니다.

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int plusarr[10000001] = {0};
int minusarr[10000001] = {0};

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0); //cin 속도 향상 위해

    int n;
    cin >> n;

    for(int i=0; i<n; i++)
    {
        int a;
        cin >> a;
        if(a >= 0)
            plusarr[a]++;
        else
            minusarr[-a]++;
    }

    int m;
    cin >> m;
    
    for(int j=0; j<m; j++)
    {
        int num;
        cin >> num;
        if(num >= 0)
            cout << plusarr[num] << ' ';
        else
            cout << minusarr[-num] << ' ';
    }
}