▽문제 바로가기
https://codeup.kr/problem.php?id=3170
입력
첫째 줄에 N과 M이 입력된다.(1<=N,M<=100,000)
둘째 줄부터 N줄 동안 문자열 S와 정수 k가 입력된다.
그 다음 M줄 동안 질문 Q가 문자열로 입력된다. 만약 부르지 않았던 단어를 질문하는 경우 0을 출력한다.
(S, Q는 100글자 이하 영어 소문자 알파벳으로만 구성, k는 10이하의 자연수)
출력
질문에 맞는 [누적 숫자]를 한줄에 하나씩 출력한다.
문제 풀이
C++ STL에 map이 있습니다. map은 키와 값을 가집니다.
map<키, 값>이름
map<string, int> myMap
myMap["hello"] = 1;
myMap["world"] = 2;
이 map을 이용하면 좀 더 직관적이게 표현할 수 있습니다. 배열이나 벡터처럼 사용방법은 비슷합니다.
#include <stdio.h>
#include <map>
#include <algorithm>
#include <iostream>
using namespace std;
int main(){
int n, m;
scanf("%d%d", &n, &m);
//string, int를 갖는 map
map <string, int> arr;
string s;
int num;
for(int i=0;i<n;i++){
cin >> s;
cin >> num;
arr[s] += num; //누적
}
string sArr[m];
for(int j=0;j<m;j++){
cin >> sArr[j];
}
for(int i=0;i<m;i++){
printf("%d\n", arr[sArr[i]]);
}
return 0;
}
'알고리즘' 카테고리의 다른 글
[C/C++] 코드업(codeup) 3515번 사탕 줍기 2 (0) | 2020.01.29 |
---|---|
[C/C++] 코드업(codeup) 3501번 백준(BOJ) 1149번 RGB 거리 (0) | 2020.01.28 |
[C/C++] 코드업(codeup) 3703번 사탕 줍기 1 (0) | 2020.01.26 |
[C/C++] 코드업(codeup) 3120번 리모컨 (0) | 2020.01.25 |
[C/C++] 코드업(codeup) 3007번 기억력 테스트 7 (0) | 2020.01.24 |