반응형
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,0
www.acmicpc.net
문제 설명은 다음과 같다.
map <int, int> 자료 구조를 활용해서 값이 입력되면, 그 key에 바로 접근해서 답을 출력할 수 있게 하면 시간 초과가 걸리지 않을 거라고 생각했고, 그대로 알고리즘을 짰다.
1. 입력되는 두 번째 줄의 값들을 key로 밀어넣고, value = 1로 넣는다.
2. 이 때 이미 key 값이 있다면 이미 전에 입력되었다는 뜻이므로, value += 1을 진행한다.
그렇게 완성된 map에 이제 하나씩 접근하면서 value 값을 뽑아내면 예제 출력이 완성된다.
(key 값에 접근이 안되는 경우는 0으로 출력하면 된다.)
아래는 제출한 C/C++ 코드이다.
#include <iostream>
#include <algorithm>
#include <string>
#include <map>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int num, testnum;
int myValue, testValue;
map<int,int> anslist;
cin >> num;
for (int i=0;i<num;i++){
cin >> myValue;
if (anslist.count(myValue) == 0) anslist[myValue] = 1;
else anslist[myValue] += 1;
}
cin >> testnum;
for (int j=0;j<testnum;j++){
cin >> testValue;
cout << ((anslist.count(testValue) == 0) ? 0 : anslist[testValue]) << " ";
}
return 0;
}
반응형
'백준 문제풀이 > 백준 Silver' 카테고리의 다른 글
백준 9012 - 괄호 [C/C++ (0) | 2023.11.02 |
---|---|
BOJ 10773 - 제로 [C/C++] (1) | 2023.10.30 |
BOJ 10866 - 덱 [C/C++ (0) | 2023.10.30 |
BOJ 11047 - 동전 0 [C/C++] / Greedy Algorithm (0) | 2023.10.30 |
BOJ 11399 - ATM [C++] / Greedy Algorithm (1) | 2023.10.30 |