프로그래머 심리 검사 프로그램
시간 제한2초메모리 제한1024 MB
키워드 목록과 대소문자 구분, 숫자 시작 허용 규칙이 주어질 때 프로그램 텍스트를 훑어 가장 많이 등장한 식별자를 찾고, 동률이면 처음 나타난 것을 출력한다.
문제
<<매크로하드>>라는 회사가 한 유명한 심리학자에게 회사 직원 전원의 심리 검사를 의뢰했다. 이 심리학자는 프로그래머가 프로그램에서 가장 자주 사용하는 식별자로 직원의 심리 상태를 완전히 파악하는 혁신적인 방법으로 유명하다. 그러나 분석에 쓰던 프로그램이 바이러스에 감염되어 못 쓰게 되었으므로, 새 프로그램을 급히 작성해야 한다. 이 유명한 심리학자를 도와주자. 주어진 프로그램에서 가장 자주 사용되는 식별자를 찾아내는 프로그램을 작성하라.
회사 직원들이 서로 다른 프로그래밍 언어로 프로그램을 작성하므로, 프로그램은 임의의 언어에서 동작할 수 있어야 한다. 언어마다 키워드가 다르므로, 분석할 언어의 키워드 목록이 입력으로 주어진다. 라틴 문자, 숫자, 밑줄로 이루어진 연속된 문자열 중 키워드가 아니면서 숫자가 아닌 문자를 하나 이상 포함하는 것은 모두 식별자가 될 수 있다. 다만 언어에 따라 식별자가 숫자로 시작할 수 있는 경우도 있고 그렇지 않은 경우도 있다. 식별자가 숫자로 시작할 수 없다면, 숫자로 시작하는 문자열은 식별자가 아니다. 이 밖에도 식별자와 키워드에 쓰이는 문자의 대소문자를 구분하는 언어인지 여부가 주어진다.
입력
입력의 첫 줄에는 언어의 키워드 개수 과 두 단어 , 가 주어진다. 와 는 각각 <<yes>> 또는 <<no>>이다. 가 <<yes>>이면 식별자와 키워드가 대소문자를 구분하고, <<no>>이면 구분하지 않는다. 가 <<yes>>이면 식별자가 숫자로 시작할 수 있고, <<no>>이면 시작할 수 없다. ()
다음 개의 줄에는 라틴 알파벳 문자와 밑줄로 이루어진 키워드가 한 줄에 하나씩 주어진다. 모든 키워드는 비어 있지 않고 서로 다르며, 언어가 대소문자를 구분하지 않으면 대소문자를 무시하고도 서로 다르다. 각 키워드의 길이는 50자를 넘지 않는다.
그다음부터 파일 끝까지 프로그램 텍스트가 주어진다. 이 텍스트는 ASCII 코드 32부터 126까지의 문자와 줄바꿈만을 포함한다. 입력 파일의 크기는 10킬로바이트를 넘지 않는다. 프로그램에는 식별자가 하나 이상 있다.
출력
프로그램에서 가장 많이 등장하는 식별자를 출력한다. 그러한 식별자가 여러 개면 그중 처음 등장하는 위치가 가장 앞선 것을 출력한다. 입력에서 주어진 언어가 대소문자를 구분하지 않으면 식별자를 아무 대소문자로나 출력해도 된다.