문제 분류
면접 대비시간 제한1초메모리 제한512 MB
문제 설명에서 각 분야의 키워드가 단어 단위로 정확히 몇 번 나오는지 세고, 합계가 가장 큰 분야를 사전순으로 출력한다.
문제
프로그래밍 문제를 읽을 때, 문제 지문에서 특정 단어를 훑어보면 문제의 주제에 대한 힌트를 얻을 수 있는 경우가 많다. 예를 들어 vertex나 edge라는 단어가 나타나면 그 문제는 거의 확실히 그래프 문제이고, words나 letters라는 단어는 문자열 문제임을 암시한다.
여러분의 과제는 문제를 개의 분류 중 하나로 분류하려고 시도하는 간단한 프로그램을 구현하는 것이다. 각 분류에는 연관된 단어 집합이 있는데, 이 단어들이 지문에 단어로 나타나면 그 문제가 이 분류에 속한다고 암시한다. 지문을 분류할 때, 프로그램은 연관된 단어의 출현 횟수가 가장 많은 분류를 제시해야 한다. 다른 단어의 일부인 단어는 세지 않는다는 점에 유의하자. 예를 들어 statement라는 단어는 ate라는 단어의 출현으로 세면 안 된다.
위의 예에서 graph 분류에 vertex와 edge라는 단어가 연관되어 있고, string 분류에 words와 letters라는 단어가 연관되어 있다고 하자. 그러면 vertex와 edge라는 단어가 각각 번 나타나면 graph 분류의 일치 횟수는 이 된다. 지문에 words가 번, letters가 번 나타나면 string 분류의 일치 횟수는 이 된다. 두 번째 분류의 일치 횟수가 더 많으므로, 프로그램은 두 번째 분류를 제시해야 한다.
일치 횟수가 같은 분류가 여러 개 있으면, 프로그램은 그 분류를 모두 제시해야 한다.
입력
입력의 첫 줄에는 분류의 수 이 주어진다.
다음 개의 줄에는 각각 분류에 대한 설명이 주어진다. 설명은 분류의 이름, 즉 단어 하나로 시작한다. 그다음에는 이 분류에 연관된 단어의 수를 나타내는 정수 이 온다. 이어서 그 개의 단어가 공백으로 구분되어 주어진다. 한 분류 안에서 두 단어가 같지 않고, 두 분류의 이름이 같지 않다.
그다음에는 문제의 지문을 설명하는 여러 줄이 온다. 각 줄에는 공백으로 구분된 단어의 목록이 있다.
입력의 모든 단어는 최대 개의 소문자 a-z로만 이루어진다. 지문은 개 이상 개 이하의 단어로 이루어진다.
출력
제시된 각 분류에 대해, 분류의 이름을 사전순으로 한 줄에 하나씩 출력한다.