본문 바로가기

PS_Baekjoon

[백준 C++] 16165번 : 걸그룹 마스터 준석이

https://www.acmicpc.net/problem/16165

 

16165번: 걸그룹 마스터 준석이

정우는 소문난 걸그룹 덕후이다. 정우의 친구 준석이도 걸그룹을 좋아하지만 이름을 잘 외우지 못한다는 문제가 있었다. 정우는 친구를 위해 걸그룹 개인과 팀의 이름을 검색하여 외우게 하는

www.acmicpc.net

풀이 :
- map을 활용해서 푸는 문제로,
   그룹명과 멤버이름이 주어지면 key값은 멤버 이름, value값은 그룹명으로 해서 map에 저장한다
- 주어지는 퀴즈가 1이라면 멤버 이름이 주어지고, 멤버가 속한 그룹명 출력
- 주어지는 퀴즈가 0이라면 그룹 이름이 주어지고, 그룹에 있는 모든 멤버의 이름 출력
 
코드 :

#include <iostream>
#include <algorithm>
#include <map>
using namespace std;

int main(){
    cin.tie(NULL);
    ios::sync_with_stdio(false);

    int n, m, members;
    bool quiz;
    string groupName, memberName, name;
    map<string, string> member;

    cin >> n >> m;
    while(n--){
        cin >> groupName >> members;
        while(members--){
            cin >> memberName;
            member.insert({memberName, groupName}); //멤버 이름이 key, 그룹명은 value
        }
    }
    while(m--){
        cin >> name >> quiz;
        if(quiz){ //퀴즈가 1이라면
            cout << member.find(name)->second << '\n'; //탐색할 필요없이 key값인 멤버 이름을 기준으로 그룹명 출력
        }else{ //퀴즈가 0이라면
            map<string,string>::iterator it;
            for(it=member.begin(); it!=member.end(); it++){ //map전체 탐색
                if(it->second == name){ //value값이 주어진 그룹명과 일치하다면 
                    cout << it->first << '\n'; //key값인 멤버이름 출력
                }
            }
        }
    }
}