#include <iostream>
#include <string>
using namespace std;
struct jej
{
string fnum;
char opera;
string snum;
char equal;
string result;
string yesno;
int R;
};
string K[11] = { "zero", "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten"};
int main()
{
int C;
scanf("%d", &C);
jej *S = new jej[C];
for (int i = 0; i < C; i++)
cin >> S[i].fnum >> S[i].opera >> S[i].snum >> S[i].equal >> S[i].result;
for (int i = 0; i < C; i++)
{
if (S[i].opera == '+')
{
int j = 0;
for (j = 0; j <= 11; j++)
{
if (S[i].fnum == K[j])
break;
}
int k = 0;
for (k = 0; k <= 11; k++)
{
if (S[i].snum == K[k])
break;
}
if (j == 11 || k == 11)
{
return 0;
}
if (j + k < 11)
S[i].R = j + k;
else
S[i].yesno = "No";
}
else if (S[i].opera == '-')
{
int j = 0;
for (j = 0; j <= 11; j++)
{
if (S[i].fnum == K[j])
break;
}
int k = 0;
for (k = 0; k <= 11; k++)
{
if (S[i].snum == K[k])
break;
}
if (j == 11 || k == 11)
{
return 0;
}
if (j - k > -1)
S[i].R = j - k;
else
S[i].yesno = "No";
}
else if (S[i].opera == '*')
{
int j = 0;
for (j = 0; j <= 11; j++)
{
if (S[i].fnum == K[j])
break;
}
int k = 0;
for (k = 0; k <= 11; k++)
{
if (S[i].snum == K[k])
break;
}
if (j == 11 || k == 11)
{
return 0;
}
if (j * k < 11)
S[i].R = j * k;
else
S[i].yesno = "No";
}
else
{
S[i].yesno = "No";
}
}
for (int i = 0; i < C; i++)
{
if (S[i].R < 11 && S[i].R>-1)
{
if (K[S[i].R].size() == S[i].result.size())
{
for (int j = 0; j < K[S[i].R].size(); j++)
{
string temp = K[S[i].R].substr(j, 1);
int index = S[i].result.find(temp);
if (index == -1)
{
S[i].yesno = "No";
break;
}
else
{
S[i].yesno = "Yes";
S[i].result.replace(index, 1, "0");
}
}
}
else
{
S[i].yesno = "No";
}
}
}
for (int i = 0; i < C; i++)
cout << S[i].yesno << endl;
delete[] S;
return 0;
}
네... 코드 개판이죠...
제가 궁금한점은 일단 제 컴퓨터상에서는 답이 잘 나오지만 당연하게도 서버에서는 오답으로 뜹니다.
제 질문은 혹시 그 이유가
2
two + three = ivef
zero * zero = one
이렇게 입력을 할때 저는 char*이나 string으로 한번에 입력받은게 아니라 구조체를 이용하여 입력받았습니다. 혹시 제가 구조체를 이용하여 입력받았기 때문에 오류가 생기는 걸까요?
아니면 혹시라도 제가 논리적인 오류를 못 찾고 있다면 힌트 하나만 주세요 ㅠㅠ
10년 전
0개의 댓글이 있습니다.
정회원 권한이 있어야 커멘트를 다실 수 있습니다. 정회원이 되시려면
온라인 저지에서 5문제 이상을 푸시고, 가입 후 7일 이상이 지나셔야
합니다. 현재 문제를 푸셨습니다.
codemist
네... 코드 개판이죠...
제가 궁금한점은 일단 제 컴퓨터상에서는 답이 잘 나오지만 당연하게도 서버에서는 오답으로 뜹니다.
제 질문은 혹시 그 이유가
2
two + three = ivef
zero * zero = one
이렇게 입력을 할때 저는 char*이나 string으로 한번에 입력받은게 아니라 구조체를 이용하여 입력받았습니다. 혹시 제가 구조체를 이용하여 입력받았기 때문에 오류가 생기는 걸까요?
아니면 혹시라도 제가 논리적인 오류를 못 찾고 있다면 힌트 하나만 주세요 ㅠㅠ
10년 전