문제

링크

풀이

#include <stdio.h>
#include <string.h>
 
void match(char s[10][31], int a[10], int round, int n) {
  int sCount = 0;
  int rCount = 0;
  int pCount = 0;
 
  for (int i=0; i<n; i++) {
    if (a[i] == 0) continue;
    if (s[i][round] == 'S') sCount++;
    if (s[i][round] == 'R') rCount++;
    if (s[i][round] == 'P') pCount++;
  }
 
  // Rock wins
  if (sCount > 0 && rCount > 0 && pCount == 0) {
    for (int i=0; i<n; i++) {
      if (s[i][round] == 'S') a[i] = 0;
    }
  }
 
  // Scissors wins
  if (sCount > 0 && rCount == 0 && pCount > 0) {
    for (int i=0; i<n; i++) {
      if (s[i][round] == 'P') a[i] = 0;
    }
  }
 
  // Paper wins
  if (sCount == 0 && rCount > 0 && pCount > 0) {
    for (int i=0; i<n; i++) {
      if (s[i][round] == 'R') a[i] = 0;
    }
  }
}
 
int win(int a[10], int n) {
  int winner = -1;
  for (int i=0; i<n; i++) {
    if (a[i] == 1) {
      if (winner == -1) {
        winner = i;
      } else {
        winner = -2;
      }
    }
  }
  return winner;
}
 
void solve(void) {
  int n, a[10];
  char s[10][31];
 
  scanf("%d", &n);
  for (int i=0; i<n; i++) {
    a[i] = 1;
    scanf("%s", s[i]);
  }
 
  for (int i=0; i<strlen(s[0]); i++) {
    match(s, a, i, n);
    int winner = win(a, n);
    if (winner != -2) {
      printf("%d\n", winner+1);
      return;
    }
  }
  printf("0\n");
}
 
int main(void) {
  int t;
 
  scanf("%d", &t);
  while (t--) {
    solve();
  }
  return 0;
}