백준

백준 10816 숫자 카드 2 c++

2024. 3. 14. 16:58

 

 

 

처음 작성한 코드는 다음과 같다.

하지만 시간 초과 오류가 발생했다.

o(n^2)이상의 복잡도는 오류가 발생해 hashmap이나 이분탐색을 사용해야 했다.

#include <iostream>
using namespace std;

int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    
    int n;
    cin >> n;
    
    int arr[n];
    for(int i=0; i<n; i++)
        cin >> arr[i];
    
    int m;
    cin >> m;
    
    for(int i=0; i<m; i++){
        int target;
        cin >> target;
        
        int sum = 0;
        for(int j=0; j<n; j++)
            if(arr[j] == target)
                sum++;
        
        cout << sum << " ";
    }
    
    return 0;
}

 

 

 

1. hashmap사용 unordered_map <int, int> m; 사용

2. 이분탐색 사용 (lower_bound, upper_bound 사용)

 

 

 

 

 

'백준' 카테고리의 다른 글

백준 14501 퇴사 c++  (0) 2024.03.21
백준 2468 안전 영역 c++  (0) 2024.03.20
백준 1920 수 찾기 c++  (0) 2024.03.14
백준 1431 시리얼 번호 c++  (0) 2024.03.13
백준 10825 국영수 c++  (0) 2024.03.13