https://www.acmicpc.net/problem/16165
16165번: 걸그룹 마스터 준석이
정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는
www.acmicpc.net
std::map 을 활용해서 해결한 문제.
입력 범위가 작아서 매번 비교대조하면서 해결해도 괜찮겠다만,
편리하고 깔끔하게 풀기 위해서는 std::map을 사용하면 좋다.
std::map 으로 문자열과 숫자 인덱스를 서로 매칭시켜 줄 수도 있고,
teamName[Name[i]] = i;
어떠한 팀 $M_i$ 에 어떠한 사람이 포함되어있는지도 맵을 사용하면 깔끔하게 판별할 수 있다.
if(member[i].find(s) != member[i].end())
대충 보고 풀어서
풀이를 좀 더 개선할 여지가 보이기는 하는데,
일단 이정도면 AC를 받는데 크게 문제가 없다.
#include <bits/stdc++.h>
using namespace std;
string Name[123];
map<string,int> teamName;
map<string,int> member[123];
int main(){
cin.sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int N,M,K,Q;
string s;
cin >> N >> M;
for(int i=1; i<=N; i++){
cin >> Name[i] >> K;
teamName[Name[i]] = i;
for(int j=0; j<K; j++){
cin >> s;
member[i][s] = 1;
}
}
for(int i=0; i<M; i++){
cin >> s >> Q;
if(Q == 0){
for(auto k : member[teamName[s]]){
cout << k.first << "\n";
}
}
if(Q == 1){
for(int i=1; i<=N; i++){
if(member[i].find(s) != member[i].end()){
cout << Name[i] << "\n";
}
}
}
}
return 0;
}
반응형