통계
시간 제한1초메모리 제한512 MB
기사에서 공백, 숫자 구간, 단어 구간, 단어를 포함한 문장, 대소문자를 무시한 회문 중 요청한 항목 개수를 셉니다.
문제
가상의 나라 바이트랜드에서 최근 새 신문 바이트뉴스가 발행되기 시작했다. 놀랍게도 이 나라 주민들은 기사의 내용에는 전혀 관심이 없고, 오직 자신과 관련된 통계에만 관심을 둔다. 그중 일부는 너무 게을러진 나머지 통계를 직접 계산하는 것조차 하기 싫어한다. 그래서 이 통계를 자동으로 만들어 주는 프로그램을 작성해 달라고 여러분에게 부탁했다.
주민들은 기사에서 다음 대상들이 각각 몇 번 나타나는지 알고 싶어 한다.
- 공백: 하나하나의 공백 문자.
- 숫자: 숫자(
0-9)로만 이루어진 최대 연속 구간으로, 양쪽이 각각 숫자가 아닌 문자이거나 텍스트의 시작 또는 끝과 맞닿아 있는 것. - 단어: 영어 소문자(
a-z) 또는 대문자(A-Z)로만 이루어진 최대 연속 구간으로, 양쪽이 각각 문자가 아닌 것이거나 텍스트의 시작 또는 끝과 맞닿아 있는 것. - 문장: 마침표로 끝나고(내부에는 다른 마침표를 포함하지 않으며) 단어를 하나 이상 포함하는 연속 구간. 각 문장의 왼쪽은 마침표이거나 텍스트의 시작과 맞닿아 있다.
- 회문: 대칭인 단어, 즉 (3번의 정의에 따른) 단어 중에서 앞에서부터 읽으나 뒤에서부터 읽으나 글자의 대소문자만 다를 수 있고 그 외에는 같은 것. 예를 들어
Abba.
다음을 수행하는 프로그램을 작성하여라.
- 표준 입력에서 기사와, 분석할 대상 종류의 목록을 읽는다.
- 요청된 통계를 계산한다.
- 결과를 표준 출력에 출력한다.
입력
첫째 줄에는 요청하는 통계 종류의 개수를 나타내는 정수 ()이 주어진다. 둘째 줄에는 세어야 할 대상의 종류 번호를 나타내는 정수 () 개가 한 칸의 공백으로 구분되어 주어진다. 번호는 위에서 대상 종류를 설명한 순서에 대응한다(예를 들어 은 텍스트에서 단어를 세라는 요청이다). 값들은 서로 모두 다르다고 가정해도 된다.
셋째 줄에는 기사의 전체 내용이 주어진다. 내용은 다음 문자들로 이루어질 수 있다.
- 숫자:
0-9 - 문자:
a-z및A-Z - 공백과 탭 문자
- 문장 부호:
,(쉼표),.(마침표),!(느낌표),?(물음표)
기사 내용의 문자 수는 을 넘지 않는다. 또한 다음을 가정해도 된다.
- 전체 테스트 케이스 중 20% 이상에서는 첫 번째 종류의 통계(공백)만 세면 된다.
- 40% 이상에서는 첫 번째와 두 번째 종류(공백과 숫자)만 세면 된다.
- 60% 이상에서는 1번부터 3번까지의 종류(공백, 숫자, 단어)만 세면 된다.
- 80% 이상에서는 1번부터 4번까지의 종류(공백, 숫자, 단어, 문장)만 세면 된다.
출력
첫째 줄이자 유일한 줄에, 요청된 통계들을 순서대로 한 칸의 공백으로 구분하여 정수 개로 출력한다.
힌트
예시 테스트에서는 다섯 종류의 통계를 모두 다음 순서로 요청한다.
- (2.) 숫자: 두 개다(
5와45). - (4.) 문장: 두 개다.
- (1.) 공백: 세 개다.
- (3.) 단어: 네 개다(
domEk,K,k,aLA). - (5.) 회문: 세 개다(
K,k,aLA).