ACM준비/algospot

XHAENEUNG

조규현15 2015. 10. 6. 15:05
반응형

https://algospot.com/judge/problem/read/XHAENEUNG

 

algospot.com :: XHAENEUNG

째능 교육 문제 정보 문제 산업 기능 요원 복무를 무사히 마치고 학교로 돌아온 xhae는 최근 복학을 위한 많은 지출로 인해 자금난에 허덕이고 있었다. 이러한 xhae가 선택한 일은 다름 아닌 째능

algospot.com

숫자 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