Computer Science/Algorithm Problem

백준] 11328 - Strfry(CCPC 2014)

TwinParadox 2018. 7. 22. 21:52
728x90

시간 제한 : 2초

메모리 제한 : 256MB




입력

입력의 첫 번째 줄은 테스트 케이스의 수 0 < N < 1001 이다.

각각의 테스트 케이스는 하나의 줄에 영어 소문자들로만 이루어진 두 개의 문자열이 한 개의 공백으로 구분되어 주어진다. 각각의 문자열의 길이는 최대 1000 이다.




출력

각각의 테스트 케이스에 대해, 2번째 문자열이 1번째 문자열에 strfry 함수를 적용하여 얻어질 수 있는지의 여부를 "Impossible"(불가능) 또는 "Possible"(가능)으로 나타내시오. (따옴표는 제외하고 출력한다.)




소스코드

#include <iostream>
#include <string>
using namespace std;
int main(void)
{
	int n;
	cin >> n;
	while (n--)
	{
		string source, dest;
		int slen, dlen;
		int sArr[26] = { 0, }, dArr[26] = { 0, };
		bool same = true;
		cin >> source >> dest;

		slen = source.length();
		dlen = dest.length();
		if (slen != dlen)
			cout << "Impossible\n";
		else
		{
			for (int i = 0; i < slen; i++)
			{
				sArr[(int)(source[i] - 'a')]++;
				dArr[(int)(dest[i] - 'a')]++;
			}
			for (int i = 0; i < 26; i++)
			{
				if (sArr[i] != dArr[i])
				{
					same = false;
					break;
				}
			}

			if (same)
				cout << "Possible\n";
			else
				cout << "Impossible\n";
		}
	}
}




Tip

문자열 처리에 능숙하면 쉽게 풀 수 있다. 문자열 길이 비교, 문자열에 있는 알파벳의 수 비교를 통해 분류하면 된다.



728x90