숫자 카드 풀을 배열로 설정하면 배열 크기만 1000만이 넘게 되는데
너무 큰 크기의 배열은 컴파일러가 프로그램의 실행을 막게되어 실패가 뜬다
따라서 배열로 카운트 하면 안되고, map 을 사용해서 풀면 되는 문제이다
수가 워낙 크니 입출력 속도 향상을 위해 ios_base::sync_with_stdio(false)를 넣어주자
+ 다른 사람들의 풀이를 보니 카드의 수를 벡터에 넣고 정렬 후
upper_bound, lower_bound 함수를 써서 인덱스 차이로 해당 카드의 개수를 파악하는 방법을 많이 쓰더라
멋진 아이디어다! 근데 나는 그 함수 첨들었고... 내 풀이가 더 쉬운 것 같다
https://www.acmicpc.net/problem/10816
#include <bits/stdc++.h>
using namespace std;
int main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n, m, num;
unordered_map<int, int> mapi;
cin >> n;
for (int i = n; i > 0; i--)
{
cin >> num;
mapi[num]++;
}
cin >> m;
for (int i = m; i > 0; i--)
{
cin >> num;
cout << mapi[num] << " ";
}
return 0;
}
'개발 노트 > 백준, 프로그래머스 풀이' 카테고리의 다른 글
[백준 1926/c++] 그림 (0) | 2022.08.07 |
---|---|
[백준 1406/c++] 에디터 (0) | 2022.08.06 |
[백준 9663/c++] N-Queen (0) | 2022.08.04 |
[백준 2480/python] 주사위 세개 (1) | 2022.08.04 |
[백준 15652/c++] N과 M (4) (0) | 2022.08.03 |
댓글