"전화번호가 뭐에요?"

"제 전화번호의 각 자리를 영어단어로 바꾸고, 철자를 잘 섞으면 OZONE TOWER가 나와요."

"예?"

"그리고 제 전화번호는 오름차순으로 정렬되어 있어요."

"..."

입력

첫 줄에 테스트케이스의 개수 T가 주어진다. 각 테스트케이스에는 상대방이 제시한 스트링 S가 주어진다. S는 영어 대문자로만 이루어져 있다.

1≤ T ≤ 100이고, S의 길이는 3 이상 20 이하이다. 모든 테스트케이스에는 유일한 해답이 있다.

출력

각 줄에 테스트케이스 번호 x와 전화번호 y를 Case #x: y의 형태로 출력한다.

예제 입력 1

4
OZONETOWER
WEIGHFOXTOURIST
OURNEONFOE
ETHER

예제 출력 1

Case #1: 012
Case #2: 2468
Case #3: 114
Case #4: 3

힌트

ZERO ONE TWO의 철자를 잘 배열하면 OZONETOWER가 나온다.


더보기

Solution

#include<stdio.h>
#include<string.h>

int main(void)
{
	int T;

	scanf("%d", &T);

	for(int t=1;t<=T;t++)
	{
		char S[21]={'\0', };
		int alphabet[26]={0, }, number[10]={0, };

		scanf("%s", S);
		for(int s=0;s<strlen(S);s++)
			alphabet[S[s]-'A']++;

		if(alphabet['Z'-'A']>0)
		{
			number[0]=alphabet['Z'-'A'];
			alphabet['Z'-'A']-=number[0];
			alphabet['E'-'A']-=number[0];
			alphabet['R'-'A']-=number[0];
			alphabet['O'-'A']-=number[0];
		}
		if(alphabet['W'-'A']>0)
		{
			number[2]=alphabet['W'-'A'];
			alphabet['T'-'A']-=number[2];
			alphabet['W'-'A']-=number[2];
			alphabet['O'-'A']-=number[2];
		}
		if(alphabet['U'-'A']>0)
		{
			number[4]=alphabet['U'-'A'];
			alphabet['F'-'A']-=number[4];
			alphabet['O'-'A']-=number[4];
			alphabet['U'-'A']-=number[4];
			alphabet['R'-'A']-=number[4];
		}
		if(alphabet['X'-'A']>0)
		{
			number[6]=alphabet['X'-'A'];
			alphabet['S'-'A']-=number[6];
			alphabet['I'-'A']-=number[6];
			alphabet['X'-'A']-=number[6];
		}
		if(alphabet['G'-'A']>0)
		{
			number[8]=alphabet['G'-'A'];
			alphabet['E'-'A']-=number[8];
			alphabet['I'-'A']-=number[8];
			alphabet['G'-'A']-=number[8];
			alphabet['H'-'A']-=number[8];
			alphabet['T'-'A']-=number[8];

		}
		if(alphabet['T'-'A']>0)
		{
			number[3]=alphabet['T'-'A'];
			alphabet['T'-'A']-=number[3];
			alphabet['H'-'A']-=number[3];
			alphabet['R'-'A']-=number[3];
			alphabet['E'-'A']-=2*number[3];
		}
		if(alphabet['F'-'A']>0)
		{
			number[5]=alphabet['F'-'A'];
			alphabet['F'-'A']-=number[5];
			alphabet['I'-'A']-=number[5];
			alphabet['V'-'A']-=number[5];
			alphabet['E'-'A']-=number[5];
		}
		if(alphabet['S'-'A']>0)
		{
			number[7]=alphabet['S'-'A'];
			alphabet['S'-'A']-=number[7];
			alphabet['E'-'A']-=2*number[7];
			alphabet['V'-'A']-=number[7];
			alphabet['N'-'A']-=number[7];
		}
		if(alphabet['O'-'A']>0)
		{
			number[1]=alphabet['O'-'A'];
			alphabet['O'-'A']-=number[1];
			alphabet['N'-'A']-=number[1];
			alphabet['E'-'A']-=number[1];
		}
		if(alphabet['I'-'A']>0)
		{
			number[9]=alphabet['I'-'A'];
			alphabet['N'-'A']-=2*number[9];
			alphabet['I'-'A']-=number[9];
			alphabet['E'-'A']-=number[9];
		}

		printf("Case #%d: ", t);
		for(int i=0;i<10;i++)
			for(int j=0;j<number[i];j++)
				printf("%d", i);
		printf("\n");
	}

	return 0;
}
728x90

+ Recent posts