본문 바로가기
개발 노트/백준, 프로그래머스 풀이

[백준 10816/c++] 숫자 카드 2

by tokkiC 2022. 8. 5.

숫자 카드 풀을 배열로 설정하면 배열 크기만 1000만이 넘게 되는데

너무 큰 크기의 배열은 컴파일러가 프로그램의 실행을 막게되어 실패가 뜬다

따라서 배열로 카운트 하면 안되고, map 을 사용해서 풀면 되는 문제이다

수가 워낙 크니 입출력 속도 향상을 위해 ios_base::sync_with_stdio(false)를 넣어주자

+ 다른 사람들의 풀이를 보니 카드의 수를 벡터에 넣고 정렬 후

upper_bound, lower_bound 함수를 써서 인덱스 차이로 해당 카드의 개수를 파악하는 방법을 많이 쓰더라

멋진 아이디어다! 근데 나는 그 함수 첨들었고... 내 풀이가 더 쉬운 것 같다

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

 

10816번: 숫자 카드 2

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

www.acmicpc.net

#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

댓글