가위바위보

시간 제한1초메모리 제한1024 MB

요약
매 라운드에서 낼 손을 정해, 이기는 친구 수가 K 이하가 되는 최소 라운드 수와 그때의 손을 구한다.
난이도

보통10점 중 5점

유형
완전 탐색, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

피돌이는 NN명의 친구들에게 선물을 주려고 한다. 하지만 가난했던 피돌이는 선물을 KK개(K<N)(K < N) 밖에 준비하지 못했다.

그럼에도 불구하고 최대한 공평하게 선물을 분배하기 위해 가위바위보로 KK명 이하의 인원을 뽑은 뒤 선물을 11개씩 나누어 주려고 한다.

여러 명이서 동시에 가위바위보를 하면 비길 확률이 너무 높기 때문에, 피돌이는 자신을 이기는 사람만 살아남는 방식으로 뽑으려고 한다.

더 구체적으로 총 MM번의 라운드를 진행하는데, 처음에 NN명으로 시작하여 라운드마다 가위바위보로 피돌이를 이긴 사람만 다음 라운드를 계속 진행한다. 그러다가 남은 사람이 KK명 이하가 되면 즉시 종료하고 선물을 나누어 준다. 만일 아무도 남아있지 않거나 마지막 라운드 이후에도 KK명 넘게 남았다면 선물을 나누어 주지 못한다.

피돌이는 가위바위보를 하기 귀찮기 때문에 최대한 빠르게 뽑으려고 한다. 이를 위해 독심술을 써서 각 친구가 ii번째(1≤i≤M)(1 \le i \le M) 라운드에 무엇을 낼 지 모두 파악해 두었다.

라운드를 최소한으로 진행하고 선물을 나누어 주려면 피돌이가 가위바위보를 어떻게 내는 것이 가장 좋을지 구하시오.

입력

첫째 줄에 친구들의 수 NN, 최대 라운드 수 MM, 준비한 선물의 개수 KK가 공백을 사이에 두고 주어진다. (1≤K<N≤50;(1 \le K < N \le 50; 1≤M≤50)1 \le M \le 50)

둘째 줄부터 NN개의 줄에 걸쳐 각 친구가 무엇을 낼지 의미하는 문자열 a_1a_2…a_Ma\_1a\_2\dots a\_M이 주어진다. a_ia\_i는 ii번째 라운드에 낼 것을 의미하며 S는 가위, R은 바위, P는 보이다. (a_i∈R,S,P(a\_i \in \\{R,S,P\\}; 1≤i≤M)1 \le i \le M)

출력

만일 피돌이가 어떻게 내도 선물을 나누어 줄 수 없다면 첫째 줄에 -1을 출력하고 종료한다.

나누어 줄 수 있다면 첫째 줄에 선물을 나누어 주기 위해 필요한 최소 라운드 수 PP을 출력한다. (1≤P≤M)(1 \le P \le M)

둘째 줄에 그때 피돌이가 어떻게 내야 하는지 의미하는 문자열 b_1b_2…b_Pb\_1b\_2\dots b\_P를 출력한다. b_ib\_i는 ii번째 라운드에 낼 것을 의미하며 S는 가위, R은 바위, P는 보이다. (b_i∈R,S,P(b\_i \in \\{R,S,P\\}; 1≤i≤P)1 \le i \le P) 가능한 답이 여러개 있다면 아무거나 하나 출력한다.

힌트

첫 번째 예제에서 피돌이가 첫 번째 라운드에서 보자기를 내면 3, 4번째 친구가 남고 두 번째 라운드에서 주먹을 내면 3번째 친구만 남아 선물을 나누어 줄 수 있다.

두 번째 예제에서 피돌이가 어떻게 내더라도 친구들이 모두 남거나 모두 탈락하기 때문에 선물을 나누어 줄 수 없다.

예제2

  1. 예제 1

    입력
    4 3 1
    RSP
    RSS
    SPS
    SRP
    
    예상 출력
    2
    PR
    
  2. 예제 2

    입력
    2 3 1
    PSR
    PSR
    
    예상 출력
    -1