반응형
10816번: 숫자 카드 2 (acmicpc.net)
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
1초 | 256MB | 30700 | 10788 | 7709 | 35.568% |
문제
숫자 카드는 정수 하나가 적혀져 있는 카드이다. 상근이는 숫자 카드 N개를 가지고 있다. 정수 M개가 주어졌을 때, 이 수가 적혀있는 숫자 카드를 상근이가 몇 개 가지고 있는지 구하는 프로그램을 작성하시오.
입력
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.
셋째 줄에는 M(1 ≤ M ≤ 500,000)이 주어진다. 넷째 줄에는 상근이가 몇 개 가지고 있는 숫자 카드인지 구해야 할 M개의 정수가 주어지며, 이 수는 공백으로 구분되어져 있다. 이 수도 -10,000,000보다 크거나 같고, 10,000,000보다 작거나 같다.
출력
첫째 줄에 입력으로 주어진 M개의 수에 대해서, 각 수가 적힌 숫자 카드를 상근이가 몇 개 가지고 있는지를 공백으로 구분해 출력한다.
예제 입력 1
10
6 3 2 10 10 10 -10 -10 7 3
8
10 9 -5 2 3 4 5 -10
예제 출력 1
3 0 0 1 2 0 0 2
풀이
Solved.ac 기준 실버4 문제이기도 하고 뭔가 map으로 풀면 쉽게 풀지 앉을까 안일한 생각으로 방심을 해버렸다.
map 컨테이너를 불러와서 읽어온 키값을 누적해줘서 바로 출력하는 형식으로 풀었는데 그대로 시간초과가 나버렸다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
//map쓰지마세요ㅠㅠㅠㅠ
#include <cstdio> #include <map>
std::map<int,int> Map;
int main(){
int N,M,n;
scanf("%d",&N);
while(N--){
scanf("%d",&n);
Map[n]++;
}
scanf("%d",&M);
while(M--){
scanf("%d",&n);
printf("%d ",Map[n]);
}
}
|
cs |
솔직히 더 생각하고싶지 않아서 메모리 생각 안하고 같은 방식으로 무식하게 풀어버렸다.
2천만짜리 어레이를 생성한 뒤에 범위에 맞게 증감시켰다.
코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
#include <cstdio>
#define MAX 10000000
int A[MAX*2+1];
int main(){
int N,M,n;
scanf("%d",&N);
while(N--){
scanf("%d",&n);
A[n+MAX]++;
}
scanf("%d",&M);
while(M--){
scanf("%d",&n);
printf("%d ",A[n+MAX]);
}
}
|
cs |
10816번: 숫자 카드 2 (acmicpc.net)
반응형
'백준' 카테고리의 다른 글
[백준 BOJ 9655번] 돌 게임 (C++ ) [DP, 다이나믹 프로그래밍] (0) | 2021.03.06 |
---|---|
[백준 BOJ 11725번] 트리의 부모 찾기 (C++ ) [트리/DFS/BFS] (0) | 2021.03.05 |
[백준 BOJ 4963번] 섬의 개수 (C++ ) (BFS/DFS) (0) | 2021.02.28 |
[백준 BOJ 11723번] 집합 (C/C++ ) [비트마스킹] (0) | 2021.02.28 |
[백준 BOJ 11727번] 2×n 타일링 2 (C++ ) (0) | 2021.02.17 |