7069 : 태그 카운터
•시간제한: 1.000 S
•메모리제한: 256 MB
•제출: 0
•통과: 0
•만든사람: suakii
문제 설명
블로그 게시물에 등록된 태그들을 수집하여 빈도를 분석하고 검색 조건을 처리하는 프로그램을 작성하십시오.
게시물에 포함되는 중복 태그는 게시물당 하나로 취급(set 처리)하며, 다음과 같은 검색 쿼리를 처리해야 합니다.
-
-
-
[제약 조건]
• 게시물 수 $N$: $1 \le N \le 200$
• 쿼리 수 $Q$: $1 \le Q \le 100$
게시물에 포함되는 중복 태그는 게시물당 하나로 취급(set 처리)하며, 다음과 같은 검색 쿼리를 처리해야 합니다.
-
FREQ tag: 특정 태그가 포함된 게시물의 수를 정수로 출력합니다.-
BOTH t1 t2: t1과 t2 두 태그가 동시에 모두 포함된 게시물의 수를 정수로 출력합니다.-
TOP K: 전체 태그 중 가장 빈도가 높은 상위 K개의 태그명을 빈도 내림차순(높은 순), 동점 시 사전순으로 정렬하여 공백으로 구분해 출력합니다. (전체 태그 수가 K보다 적으면 전체 태그 출력)[제약 조건]
• 게시물 수 $N$: $1 \le N \le 200$
• 쿼리 수 $Q$: $1 \le Q \le 100$
입력 설명
첫째 줄에 게시물의 수 N이 주어집니다. (1 ≤ N ≤ 200)
둘째 줄부터 N개의 줄에 걸쳐 각 게시물에 포함된 태그들이 공백으로 구분되어 주어집니다.
이후 다음 줄에 쿼리의 수 Q가 주어집니다. (1 ≤ Q ≤ 100)
그 다음 줄부터 Q개의 줄에 걸쳐 "FREQ tag", "BOTH t1 t2", "TOP K" 형식의 쿼리가 한 줄에 하나씩 주어집니다.
둘째 줄부터 N개의 줄에 걸쳐 각 게시물에 포함된 태그들이 공백으로 구분되어 주어집니다.
이후 다음 줄에 쿼리의 수 Q가 주어집니다. (1 ≤ Q ≤ 100)
그 다음 줄부터 Q개의 줄에 걸쳐 "FREQ tag", "BOTH t1 t2", "TOP K" 형식의 쿼리가 한 줄에 하나씩 주어집니다.
출력 설명
Q개의 줄에 걸쳐 각 쿼리에 대한 연산 결과를 출력합니다.
입력 예시
COPY
복사되었습니다!
복사되었습니다!
4
python programming study
python coding fun
java programming study
coding fun
4
FREQ python
BOTH programming study
BOTH python java
TOP 3
출력 예시
COPY
복사되었습니다!
복사되었습니다!
2
2
0
coding fun programming
도움
각 게시물의 태그들을
FREQ는 딕셔너리에서 바로 조회하고, BOTH는 두 집합의 교집합 연산(
set으로 중복 제거하여 리스트에 모으고, 전체 태그들의 등장 빈도는 딕셔너리로 계산하십시오.FREQ는 딕셔너리에서 바로 조회하고, BOTH는 두 집합의 교집합 연산(
t1 in post and t2 in post)의 개수를 누적하며, TOP은 딕셔너리 아이템들을 다중 정렬하여 출력하면 됩니다.