반응형
https://algospot.com/judge/problem/read/XHAENEUNG
숫자 MAP을 생성함.
입력받은 숫자를 매핑하여 Integer로 변환함.
+, -, * 연산자에 따라 수행함.
#define Interval 97
int MAP[11][26];
void MapSet(int Num, char *str)
{
int Len = strlen(str);
for (int i = 0; i < Len; i++)
++MAP[Num][str[i] - Interval];
}
void Map()
{
memset(MAP, 0, sizeof(MAP));
MapSet(0, "zero"); MapSet(1, "one"); MapSet(2, "two"); MapSet(3, "three");
MapSet(4, "four"); MapSet(5, "five"); MapSet(6, "six"); MapSet(7, "seven");
MapSet(8, "eight"); MapSet(9, "nine"); MapSet(10, "ten");
}
int getTrans(char *numberSTR)
{
int Num, Len = strlen(numberSTR);
int iMap[26];
memset(iMap, 0, sizeof(iMap));
for (int i = 0; i < Len; i++)
++iMap[numberSTR[i] - Interval];
for (int i = 0; i < 11; i++)
{
bool s = true;
for (int j = 0; j < 26;j++)
if (MAP[i][j] != iMap[j])
s = false;
if (s)
return i;
}
return -1;
}
int main()
{
Map();
int T;
for (scanf("%d", &T); T > 0; T--)
{
char A[11], B[11], C[11], operator1, operator2;
scanf("%s %c %s %c %s", &A, &operator1, &B, &operator2, C);
int iA = getTrans(A), iB = getTrans(B), iC = getTrans(C);
if (iC == -1)printf("No\n");
else
{
switch (operator1)
{
case '+':
if (iA + iB > 10) printf("No\n");
else if ((iA + iB) == iC) printf("Yes\n");
else printf("No\n");
break;
case '-':
if (iA - iB < 0) printf("No\n");
else if ((iA - iB) == iC) printf("Yes\n");
else printf("No\n");
break;
case '*':
if (iA * iB > 10) printf("No\n");
else if ((iA * iB) == iC) printf("Yes\n");
else printf("No\n");
break;
}
}
}
return 0;
}
반응형
'ACM준비 > algospot' 카테고리의 다른 글
[JS] a star algorithm (0) | 2023.06.02 |
---|---|
BUNT (0) | 2015.10.02 |
BOOKSTORE (0) | 2015.10.01 |
GAME (0) | 2015.10.01 |
BRUTEFORCE (0) | 2015.09.22 |