창고
면접 대비시간 제한1초메모리 제한1024 MB
각 장난감의 개수를 모든 배송에서 합산한 뒤, 개수가 많은 순으로 나열하고 개수가 같으면 사전순으로 출력합니다.
문제
엘비라는 크리스마스 시즌 출하 물량을 처리하고 있다. 하루 동안 여러 종류의 장난감 출하분이 창고에 들어오고, 사장은 하루가 끝나면 요약 보고서를 받고 싶어 한다. 각 출하분은 한 종류의 장난감 여러 개로 이루어진다.
요약 보고서는 하루 동안 창고에 도착한 모든 장난감을 모아 정리한 목록이다. 사장은 가장 잘 팔린 장난감에 관심이 많으므로, 장난감을 개수의 내림차순으로 정렬해야 한다. 두 종류의 장난감 개수가 같으면 사전 순으로 정렬한다.[1]
입력
입력의 첫 줄에는 테스트 케이스의 개수 ()가 주어진다.
각 테스트 케이스는 정수 ()이 적힌 줄로 시작한다. 이는 처리할 출하분이 개 들어온다는 뜻이다. 이어지는 개의 줄은 출하분 하나씩을 나타낸다. 각 줄에는 장난감의 이름인 문자열과 그 출하분에 들어 있는 해당 장난감의 개수인 정수가 주어진다. 장난감 이름은 최대 글자의 소문자 (a부터 z까지) 문자열이며, 한 출하분에는 개 이상 개 이하의 장난감이 들어온다.
출력
각 테스트 케이스에 대해, 창고에 도착한 서로 다른 장난감의 개수 를 출력한다.
이어서 개의 줄을 출력한다. 각 줄에는 장난감의 이름과 모든 출하분을 합산한 도착 개수를 출력한다. 장난감은 개수의 내림차순으로 출력하고, 개수가 같으면 사전 순으로 출력한다.
힌트
각주
- 두 문자열 중 어느 것이 사전 순으로 앞서는지는 첫 글자부터 비교한다. 첫 글자가 다르면 알파벳에서 더 앞에 있는 글자로 시작하는 문자열이 먼저 온다. 첫 글자가 같으면 둘째 글자를 비교하고, 이와 같은 방식으로 계속 비교한다. 한쪽 문자열의 글자가 먼저 끝나고 다른 쪽에 글자가 남아 있으면, 더 짧은 문자열이 먼저 온다.