─━ IT ━─

[백준] [JAVA] 16165번 문제 - 걸그룹 마스터 준석이

DKel 2021. 3. 14. 14:37
반응형
 

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

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

www.acmicpc.net

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

설명

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

제한사항

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

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

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

 

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

 

소스코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;

public class Main {

	public static void main(String[] args) throws java.lang.Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		Map<String, String> teamMap = new HashMap<>();

		String[] temp = br.readLine().split(" ");
		int teamCnt = Integer.parseInt(temp[0]);
		int questionCnt = Integer.parseInt(temp[1]);

		for (int i = 0; i < teamCnt; i++) {
			String teamName = br.readLine();

			StringBuilder sb = new StringBuilder();
			int memCnt = Integer.parseInt(br.readLine());
			String[] memberList = new String[memCnt];
			for (int j = 0; j < memCnt; j++) {
				memberList[j] = br.readLine();
			}
			Arrays.sort(memberList);
			for (int j = 0; j < memCnt; j++) {
				sb.append(memberList[j]);
				if (j != memCnt - 1) sb.append("|");
			}
			teamMap.put(teamName, sb.toString());
		}


		for (int i = 0; i < questionCnt; i++) {
			String questionName = br.readLine();
			int questionType = Integer.parseInt(br.readLine());

			if (questionType == 0) {
				// Team

				String str = teamMap.get(questionName);
				String[] res = str.split("\\|");
				for (String re : res) {
					bw.append(re).append("\n");
				}
			} else if (questionType == 1) {
				// Member

				for (String teamName : teamMap.keySet()) {
					String memberFullString = teamMap.get(teamName);
					if (memberFullString.contains(questionName)) {
						bw.append(teamName).append("\n");
						break;
					}
				}
			}
		}

		bw.flush();
	}

}

제출한 소스코드

 

lemondkel - Overview

4-Year Web programmer. lemondkel has 41 repositories available. Follow their code on GitHub.

github.com

 

반응형