#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%나 맞췃는데 이거 어떻게 한번에풀지 ㅆㅂ 문제자체가 존나쉬워서 대충봐도 흐름알거임
4407055 dcwhatu 8896 맞았습니다!! 1528 KB 8 MS C++11 / 수정 1679 B 방금 전
일단 위 코드를 보니 이프문이 떡칠이라 보기 참 ㅈ같네여
거기 보면 한 줄로 가위바위보 받는데 게임이 안끝났는데 명령을 짧게 받으면 보 내라고 했는데 그거에 대한 처리 안보이는듯
그러면 처음 배열 초기화를 P로 해줘야된다는말임???? 어차피 널까지 비교해보고 무승부되는거아닌가
입력이 한놈은 RRRR 로 나오고 한놈이 RRR 로만 받으면 후자가 마지막에 'P'를 내니까 후자가 이김
입력받은값중 최대길이까지 맞춰줘야 한단 얘기임
문제가 병신같네 번역을 병신같이한건가
혹시 코드좀 올려줄수잇음?
글쌈
오떙큐땡큐