백준[10816] - 숫자 카드2

문제

백준 10816 문제 보기

접근 방법

숫자를 입력 받음과 동시에 인덱스 정보로 활용해 갯수를 저장한다. 음수 같은 경우는 양수의 최대 범위 이후로 인덱스를 설정해 저장한다.

코드

#include <iostream>
#include <cstring>

using namespace std;

int N, M;
int arr[20000001];
int ans[500000];

int main() {

    cin >> N;
    memset(arr, 0, sizeof(arr));
    for(int i = 0; i < N; i ++) {
        int idx;
        cin >> idx;
        // 입력받은 수가 음수이면 양수화 하고 양수 인덱스 뒤로 설정
        if(idx < 0) {
            idx *= -1;
            idx += 10000000;
        }

        arr[idx] ++;
    }

    cin >> M;
    for(int i = 0; i < M; i++) {
        int temp;
        cin >> temp;
        if(temp < 0){
            temp *= -1;
            temp += 10000000;
        }

        ans[i] = temp;
    }

    for(int i = 0; i < M; i++) {
        int idx = ans[i];
        cout << arr[idx] << " ";
    }

    return 0;
}
Share