#include <iostream>

using namespace std;


char s[100][11][32];//문자열

int T; //테스트

int N; // 로봇수

int a[3]; //가위바위보 체크

int life[100][12]; //이김,짐체크

int j; 

int answer[11];//답저장

int h;

int i;

int z;

int leng;//문자길이

int main() {


cin >> T;

for (int z = 0; z<T; z++)//테스트케이스 변수

{

cin >> N;

for (i = 0; i < N; i++)

{

cin >> s[z][i];

life[z][i] = 1;

}

for (i = 0; i < 31; i++)

{

if (s[z][0][i] == '\0') { leng = i; break; }

}

for (i = 0; i < leng; i++)//null문자까지

a[0] = 0; a[1] = 0; a[2] = 0;

for(j=0;j<N;j++)

{

if (life[z][j] == 1)      //살았는지 죽었는지확인

{

if (s[z][j][i] == 'R')a[0]++;

if (s[z][j][i] == 'S')a[1]++;

if (s[z][j][i] == 'P')a[2]++;

}//가위바위보 숫자 체크

}

if (a[0] == 0 || a[1] == 0 || a[2] == 0) //판정 2개거나 1개거나

{

if ((a[0] == 0 && a[1] == 0) || (a[1] == 0 && a[2] == 0) || (a[0] == 0 && a[2] == 0))//무승부

{

}

else if (a[0] == 0) //s이김 r없음 p짐

{

for (int k = 0; k < N; k++)

{

if (s[z][k][i] == 'P')life[z][k] = 0;//진애들 죽임

if (a[1] == 1) //혼자남았으면 우승

{

for (int k = 0; k < N; k++)

{

if (life[z][k] == 1) 

{

answer[z] = k + 1; break;

}

}

}

}

}

else if (a[1] == 0)//P이김 s없음 r짐

{

for (int k = 0; k < N; k++)

{

if (s[z][k][i] == 'R')life[z][k] = 0;

if (a[2] == 1)

{

for (int k = 0; k < N; k++)

{

if (life[z][k] == 1)

{

answer[z] = k + 1; break;

}

}

}

}

}

else if (a[2] == 0)//R이김 p없음 s짐

{

for (int k = 0; k < N; k++)

{

if (s[z][k][i] == 'S')life[z][k] = 0;

if (a[0] == 1) 

{

for (int k = 0; k < N; k++)

{

if (life[z][k] == 1)

{

answer[z] = k + 1; break;

}

}

}

}

}

}

}


}

for (int i = 0; i < T; i++)

{

cout << answer[i] << endl;

}

return 0;


}

https://www.acmicpc.net/problem/8896


이문제인데


소스이렇게 짯는데 이씨발 테스트 다넣어봐도 안되네.... 50%나 맞췃는데 이거 어떻게 한번에풀지 ㅆㅂ 문제자체가 존나쉬워서 대충봐도 흐름알거임