PS

BOJ 10816 - 숫자 카드 2

728x90

www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

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

www.acmicpc.net

 

- c++

#include <bits/stdc++.h>
 
#define MAX 10000000
 
using namespace std;
 
int arr[MAX * 2 + 1];
int n, m;
 
int main() {
    cin.tie(0); ios_base::sync_with_stdio(0);
    
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int num;
        cin >> num;
        if (num < 0) arr[MAX + abs(num)]++
        else arr[num]++;
    }
    
    cin >> m;
    for (int i = 0; i < m; ++i) {
        int num;
        cin >> num;
        if (num < 0cout << arr[MAX + abs(num)] << " ";
        else cout << arr[num] << " ";
    }
    
    return 0;
}
cs

 

 

 

배열에 넣어서 처리하는 방식으로 어찌 저찌 통과하긴 했으나

메모리를 상당히 많이 잡아 먹었다.

다른 풀이들을 보니, 이분 탐색으로 많이들 푸는것 같다.

 

- 다른 풀이

#include <bits/stdc++.h>
 
using namespace std;
 
int n, m;
vector<int> vec;
 
int main() {
    cin.tie(0); ios_base::sync_with_stdio(0);
    
    cin >> n;
    for (int i = 0; i < n; ++i) {
        int num;
        cin >> num;
        vec.push_back(num);
    }
    
    sort(vec.begin(), vec.end());
    
    cin >> m;
    for (int i = 0; i < m; ++i) {
        int num;
        cin >> num;
        cout << upper_bound(vec.begin(), vec.end(), num) - lower_bound(vec.begin(), vec.end(), num) << " ";
    }
    
    return 0;
}
cs

 

 

 

 

- 참고

jaimemin.tistory.com/993

 

백준 10816번 숫자 카드 2

문제 링크입니다: https://www.acmicpc.net/problem/10816 백준 10815번 숫자 카드(http://jaimemin.tistory.com/991)와 똑같은 문제였지만 개수까지 구해야해서 단순 이분 탐색을 이용할 경우 TLE가 발생합니다..

jaimemin.tistory.com

m.blog.naver.com/PostView.nhn?blogId=bestmaker0290&logNo=220820005454&proxyReferer=http:%2F%2F59.16.1.11%2F

 

알고리즘 기초 - Lower Bound & Upper Bound

Lower Bound와 Upper Bound는 일종의 이분 탐색에서 파생된 것으로, 이분 탐색이 '원하는 값 k를 ...

blog.naver.com

 

728x90

'PS' 카테고리의 다른 글

프로그래머스 - 프린터  (0) 2020.11.19
순열  (0) 2020.11.18
BOJ 15683 - 감시  (0) 2020.11.13
BOJ 18808 - 스티커 붙이기  (0) 2020.11.13
거스름돈 기초 문제  (0) 2020.11.12