Koder / 박성훈
article thumbnail

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;
}

반응형