만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

창고

면접 대비

시간 제한1초메모리 제한1024 MB

요약
각 장난감의 개수를 모든 배송에서 합산한 뒤, 개수가 많은 순으로 나열하고 개수가 같으면 사전순으로 출력합니다.
난이도

쉬움10점 중 3점

유형
해시맵, 정렬
정답자
아직 제출이 없습니다

문제

엘비라는 크리스마스 시즌 출하 물량을 처리하고 있다. 하루 동안 여러 종류의 장난감 출하분이 창고에 들어오고, 사장은 하루가 끝나면 요약 보고서를 받고 싶어 한다. 각 출하분은 한 종류의 장난감 여러 개로 이루어진다.

요약 보고서는 하루 동안 창고에 도착한 모든 장난감을 모아 정리한 목록이다. 사장은 가장 잘 팔린 장난감에 관심이 많으므로, 장난감을 개수의 내림차순으로 정렬해야 한다. 두 종류의 장난감 개수가 같으면 사전 순으로 정렬한다.[1]

입력

입력의 첫 줄에는 테스트 케이스의 개수 TT (1≤T≤1001 \le T \le 100)가 주어진다.

각 테스트 케이스는 정수 NN (1≤N≤1001 \le N \le 100)이 적힌 줄로 시작한다. 이는 처리할 출하분이 NN개 들어온다는 뜻이다. 이어지는 NN개의 줄은 출하분 하나씩을 나타낸다. 각 줄에는 장난감의 이름인 문자열과 그 출하분에 들어 있는 해당 장난감의 개수인 정수가 주어진다. 장난감 이름은 최대 1010글자의 소문자 (a부터 z까지) 문자열이며, 한 출하분에는 11개 이상 1010개 이하의 장난감이 들어온다.

출력

각 테스트 케이스에 대해, 창고에 도착한 서로 다른 장난감의 개수 KK를 출력한다.

이어서 KK개의 줄을 출력한다. 각 줄에는 장난감의 이름과 모든 출하분을 합산한 도착 개수를 출력한다. 장난감은 개수의 내림차순으로 출력하고, 개수가 같으면 사전 순으로 출력한다.

힌트

각주

  1. 두 문자열 중 어느 것이 사전 순으로 앞서는지는 첫 글자부터 비교한다. 첫 글자가 다르면 알파벳에서 더 앞에 있는 글자로 시작하는 문자열이 먼저 온다. 첫 글자가 같으면 둘째 글자를 비교하고, 이와 같은 방식으로 계속 비교한다. 한쪽 문자열의 글자가 먼저 끝나고 다른 쪽에 글자가 남아 있으면, 더 짧은 문자열이 먼저 온다.

예제1

  1. 예제 1

    입력
    2
    4
    furby 4
    elmo 5
    furby 1
    kirby 10
    2
    funfungame 1
    funfun 1
    
    예상 출력
    3
    kirby 10
    elmo 5
    furby 5
    2
    funfun 1
    funfungame 1