시간 제한 | 메모리 제한 | 제출 | 정답 | 맞힌 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 128 MB | 633 | 287 | 214 | 46.022% |
N(1≤N≤26)명의 사람이 테니스 시합을 하려 한다. 테니스 게임은 두 명이 하는 것이 일반적이지만, 이 문제에서는 테니스 규칙을 조금 변경하여 N명이 함께 플레이하는 형태가 된다. 즉, N명의 선수들이 모두 하나의 코트에 올라 게임을 진행하는 형식이다.
기본적으로 하나의 시합은 여러 개의 세트로 이루어진다. 각각의 세트는 다시 여러 개의 게임으로 이루어진다. 각각의 게임은 다시 여러 개의 턴으로 이루어진다. 즉 게임에서 이기기 위해서는 먼저 턴을 이기고, 이를 통해 게임을 이긴 뒤, 다시 이를 통해 세트를 이기면 된다.
시합을 하다 보면 서브를 하는 사람이 중요한데, 서브는 각 턴에서 순서대로 하고, 각 게임에서는 이전 게임에서 제일 먼저 서브를 했던 사람의 다음 사람부터 서브를 하고, 각 세트의 첫 번째 게임의 첫 턴에서는 이전 세트의 첫 게임에서 처음 서브를 한 사람의 다음 사람이 서브를 하게 된다. 예를 들어 N=3일 때 서브를 하는 순서는 다음과 같다. 각각의 사람은 알파벳 대문자로 A부터 차례로 표현된다.
각 게임의 승자를 가리는 규칙은 다음과 같다. 먼저 각각의 선수들은 0점에서 각 게임을 시작하게 된다. 각 선수들이 하나의 턴에서 이길 경우, 그 선수의 점수의 변화 및 게임의 승자에 대한 규칙은 다음과 같다. 규칙의 우선순위는 (1) > (2) > (3) > (4) 순서이다.
하나의 세트의 승자는 최소 6개의 게임을 이겼으며, 다른 모든 선수들보다 최소 두 게임을 더 이긴 선수가 된다. 또한 시합의 승자는 최소 3개의 세트를 이긴 선수가 된다. 단, 어떤 세트에서 하나의 선수가 모든 게임을 이긴 경우에는 두 개의 세트를 이긴 것으로 친다.
테니스 시합이 진행될 때, 각 게임의 승자가 주어졌을 때, 최종 승자를 출력하는 프로그램을 작성하시오.
첫째 줄에 정수 N와 스트링 S가 주어진다. S는 각 게임에서의 승자를 차례대로 나열한 스트링이다. 단순히 각 게임의 승자만을 나열한 것이기 때문에, 어디까지가 어떤 세트이고 어떤 게임인지를 알기 위해서는 이 스트링을 위의 규칙대로 분석하여야 한다. 스트링의 길이는 100,000을 넘지 않는다. 주어지는 입력이 잘못된 경우는 없다고 가정한다.
첫째 줄에 승자를 출력한다.
3 BBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBBB
B