소감

2005/02/19 Accepted 0:00.002 64
ASCII 코드를 이용하여 소문자를 0~26의 숫자로 인코딩시켰다. 그 인코딩 숫자를 이용한 배열을 만들어서 그 배열끼리 비교를 해서 공통된 변경 문자열을 쉽게 만들수 있었다.

코드

~cpp 
// no10252 - Common Permutation
#include <iostream>
#include <cstring>
using namespace std;

const int MAX = 1000;

int main()
{
	char str[MAX+1];
	int first[26], second[26];
	int len, min, count;
	int i, j;

	while (cin.getline(str, MAX+1, '\n'))
	{ 
		/* 입력 */
		for (i=0; i<26; i++) 
			first[i] = second[i] = 0;

		len = strlen(str);
		for (i=0; i<len; i++) 
			first[str[i]-97]++;

		cin.getline(str, MAX+1, '\n');
		len = strlen(str);
		for (i=0; i<len; i++) 
			second[str[i]-97]++;
		
		/* 변경 문자열 찾기 */
		count = 0;
		for (i=0; i<26; i++)
		{
			if (first[i] == 0 || second[i] == 0)
				continue;
			if (first[i] < second[i])
				min = first[i];
			else
				min = second[i];
			for (j=0; j<min; j++)
				str[count++] = i + 97;
		}
		str[count] = '\0';
		cout << str << endl;
	}
	return 0;
}
Retrieved from http://wiki.zeropage.org/wiki.php/CommonPermutation/문보창
last modified 2021-02-07 05:22:58