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

2023. 7. 3. 23:43·[게임 개발] 알고리즘 공부/백준

링크

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

 

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

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

www.acmicpc.net

문제

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

입출력 예제

입력

첫 번째 줄에는 총 입력 받을 걸그룹의 수 N(0 < N < 100)과 맞혀야 할 문제의 수 M(0 < M < 100)을 입력받는다.

두 번째 줄부터는 각 걸그룹마다 팀의 이름, 걸그룹의 인원 수, 멤버의 이름을 한 줄씩 차례대로 입력받는다. 팀과 멤버의 이름은 최대 100글자이며, 모든 글자는 알파벳 소문자이다. 하나의 걸그룹이나 서로 다른 두 걸그룹에 이름이 같은 두 멤버가 있는 경우는 없다.

그 다음 줄부터는 M개의 퀴즈를 입력받는다. 각각의 퀴즈는 두 줄로 이루어져 있으며, 팀의 이름이나 멤버의 이름이 첫 줄에 주어지고 퀴즈의 종류를 나타내는 0 또는 1이 두 번째 줄에 주어진다. 퀴즈의 종류가 0일 경우 팀의 이름이 주어지며, 1일 경우 멤버의 이름이 주어진다.

출력

첫 번째 줄부터 차례대로 퀴즈에 대한 답을 출력한다. 퀴즈의 종류가 0일 경우 해당 팀에 속한 멤버의 이름을 사전순으로 한 줄에 한 명씩 출력한다. 퀴즈의 종류가 1일 경우 해당 멤버가 속한 팀의 이름을 출력한다.

예제 입력 1 복사
3 4
twice
9
jihyo
dahyeon
mina
momo
chaeyoung
jeongyeon
tzuyu
sana
nayeon
blackpink
4
jisu
lisa
rose
jenny
redvelvet
5
wendy
irene
seulgi
yeri
joy
sana
1
wendy
1
twice
0
rose
1
예제 출력 1 복사
twice
redvelvet
chaeyoung
dahyeon
jeongyeon
jihyo
mina
momo
nayeon
sana
tzuyu
blackpink

코드

#include <vector>
#include <string>
#include <algorithm>
#include <unordered_map>
#include <map>
#include <iostream>

using namespace std;

int main(void)
{ 
	vector<string> result;
	map<string, string> memberMap;
	map<string, vector<string>> groupMap;
	int n, m;
	
	cin >> n >> m;

	for (int i = 0; i < n; i++)
	{
		string group;
		int member;
		vector<string> memberList;
		
		cin >> group >> member;

		for (int j = 0; j < member; j++)
		{
			string temp;
			cin >> temp;
			memberMap.insert({ temp, group });
			memberList.push_back(temp);
		}
		// 멤버 목록 정렬
		sort(memberList.begin(), memberList.end());
		groupMap.insert({ group, memberList });
	}

	for (int i = 0; i < m; i++)
	{
		string tempS;
		int tempI;
		cin >> tempS >> tempI;
		
		// 1 입력 시 입력 받은 멤버의 그룹 출력
		if (tempI == 1)
		{
			if (memberMap.find(tempS) != memberMap.end())
			{
				result.push_back(memberMap[tempS]);
			}

		}

		// 0 입력 시 입력 받은 그룹의 멤버들 출력
		else if (tempI == 0)
		{
			if (groupMap.find(tempS) != groupMap.end())
			{
				for (auto groupMember : groupMap[tempS])
				{
					result.push_back(groupMember);
				}
			}
		}
	}

	for (auto temp : result)
	{
		cout << temp << "\n";
	}

	return 0;
}

풀이

  • 문제에서 그룹 멤버 이름은 사전순으로 정렬하는 조건이 있기 때문에 map을 사용하였다.
  • 멤버를 key 그룹명을 value로 하는 맵과  그룹명을 key 멤버들을 value로 하는 두가지 맵을 만들었다.
    멤버들은 여러명이기 때문에 vector<string>을 통해 저장하였다.
  • 멤버 이름을 입력받아 그룹명을 출력 하는것은 find를,
    그룹명을 입력받아 멤버를 출력하는것은 find로 해당 그룹명이 존재하는지 확인 후
    범위기반 for문으로 그룹 멤버를 하나씩 저장하였다.
저작자표시 (새창열림)

'[게임 개발] 알고리즘 공부 > 백준' 카테고리의 다른 글

[C++] 22252번: 정보 상인 호석  (0) 2023.07.04
[C++] 22233번: 가희와 키워드  (0) 2023.07.04
[C++] 13414번: 수강신청  (0) 2023.06.30
[C++] 11659번: 구간 합 구하기 4  (0) 2023.06.29
[C++] 16507번: 어두운 건 무서워  (0) 2023.06.29
'[게임 개발] 알고리즘 공부/백준' 카테고리의 다른 글
  • [C++] 22252번: 정보 상인 호석
  • [C++] 22233번: 가희와 키워드
  • [C++] 13414번: 수강신청
  • [C++] 11659번: 구간 합 구하기 4
람팜팜~
람팜팜~
:)
  • 람팜팜~
    RumPumPum
    람팜팜~
  • 전체
    오늘
    어제
    • 전체 (123)
      • 🎵 일상 (2)
      • JAVA (5)
        • 김영한의 자바 입문 (3)
      • JavaScript (12)
      • ---------------------------.. (0)
      • [게임 개발] 포트폴리오 (2)
        • RPG (1)
        • 슈터-플랫포머 (1)
      • [게임 개발] 개발 일지 (28)
        • RPG (25)
        • TopDownProject (3)
      • [게임 개발] 언리얼엔진 공부 (9)
        • 이득우의 언리얼 프로그래밍 Part.1 (6)
        • 이득우의 언리얼 프로그래밍 Part.2 (1)
        • 개인 메모 (2)
      • [게임 개발] 알고리즘 공부 (60)
        • 프로그래머스 (8)
        • 백준 (52)
        • 개인 메모 (0)
      • [게임 개발] CPP 공부 (2)
        • 이것이 C++ 이다 (1)
        • Effective C++ (0)
        • Effective Modern C++ (0)
        • 홍정모 그래픽스 새싹코스 (1)
      • [게임 개발] CS 공부 (3)
  • 블로그 메뉴

    • 링크

      • Github
    • 공지사항

    • 인기 글

    • 태그

      누적합
      문자열
      해시
      dp
      context switching
      슬라이딩 윈도우
      메모리구조
      투포인터
      dfs
      데드락
      브루트포스
      그리디
      스레드
      프로세스
      역참조
      참조자
      우선순위 큐
    • 최근 댓글

    • 최근 글

    • hELLO· Designed By정상우.v4.10.3
    람팜팜~
    [C++] 16165번: 걸그룹 마스터 준석이
    상단으로

    티스토리툴바