통계

아직 제출이 없습니다시간 제한1초메모리 제한512 MB

문제

가상의 나라 바이트랜드에서 최근 새 신문 바이트뉴스가 발행되기 시작했다. 놀랍게도 이 나라 주민들은 기사의 내용에는 전혀 관심이 없고, 오직 자신과 관련된 통계에만 관심을 둔다. 그중 일부는 너무 게을러진 나머지 통계를 직접 계산하는 것조차 하기 싫어한다. 그래서 이 통계를 자동으로 만들어 주는 프로그램을 작성해 달라고 여러분에게 부탁했다.

주민들은 기사에서 다음 대상들이 각각 몇 번 나타나는지 알고 싶어 한다.

  1. 공백: 하나하나의 공백 문자.
  2. 숫자: 숫자(0-9)로만 이루어진 최대 연속 구간으로, 양쪽이 각각 숫자가 아닌 문자이거나 텍스트의 시작 또는 끝과 맞닿아 있는 것.
  3. 단어: 영어 소문자(a-z) 또는 대문자(A-Z)로만 이루어진 최대 연속 구간으로, 양쪽이 각각 문자가 아닌 것이거나 텍스트의 시작 또는 끝과 맞닿아 있는 것.
  4. 문장: 마침표로 끝나고(내부에는 다른 마침표를 포함하지 않으며) 단어를 하나 이상 포함하는 연속 구간. 각 문장의 왼쪽은 마침표이거나 텍스트의 시작과 맞닿아 있다.
  5. 회문: 대칭인 단어, 즉 (3번의 정의에 따른) 단어 중에서 앞에서부터 읽으나 뒤에서부터 읽으나 글자의 대소문자만 다를 수 있고 그 외에는 같은 것. 예를 들어 Abba.

다음을 수행하는 프로그램을 작성하여라.

  • 표준 입력에서 기사와, 분석할 대상 종류의 목록을 읽는다.
  • 요청된 통계를 계산한다.
  • 결과를 표준 출력에 출력한다.

입력

첫째 줄에는 요청하는 통계 종류의 개수를 나타내는 정수 nn (1n51 \le n \le 5)이 주어진다. 둘째 줄에는 세어야 할 대상의 종류 번호를 나타내는 정수 aia_i (1ai51 \le a_i \le 5) nn개가 한 칸의 공백으로 구분되어 주어진다. 번호는 위에서 대상 종류를 설명한 순서에 대응한다(예를 들어 ai=3a_i = 3은 텍스트에서 단어를 세라는 요청이다). aia_i 값들은 서로 모두 다르다고 가정해도 된다.

셋째 줄에는 기사의 전체 내용이 주어진다. 내용은 다음 문자들로 이루어질 수 있다.

  • 숫자: 0-9
  • 문자: a-zA-Z
  • 공백과 탭 문자
  • 문장 부호: ,(쉼표), .(마침표), !(느낌표), ?(물음표)

기사 내용의 문자 수는 10000001\,000\,000을 넘지 않는다. 또한 다음을 가정해도 된다.

  • 전체 테스트 케이스 중 20% 이상에서는 첫 번째 종류의 통계(공백)만 세면 된다.
  • 40% 이상에서는 첫 번째와 두 번째 종류(공백과 숫자)만 세면 된다.
  • 60% 이상에서는 1번부터 3번까지의 종류(공백, 숫자, 단어)만 세면 된다.
  • 80% 이상에서는 1번부터 4번까지의 종류(공백, 숫자, 단어, 문장)만 세면 된다.

출력

첫째 줄이자 유일한 줄에, 요청된 통계들을 순서대로 한 칸의 공백으로 구분하여 정수 nn개로 출력한다.

힌트

예시 테스트에서는 다섯 종류의 통계를 모두 다음 순서로 요청한다.

  • (2.) 숫자: 두 개다(545).
  • (4.) 문장: 두 개다.
  • (1.) 공백: 세 개다.
  • (3.) 단어: 네 개다(domEk, K, k, aLA).
  • (5.) 회문: 세 개다(K, k, aLA).