Google Kick Start 2021 Round H - A(Transform the String)

Dongjae Lee·2021년 11월 24일
#include <bits/stdc++.h>
using namespace std;

int main() {
	int T;
	scanf("%d", &T);
	
	for(int tc = 1; tc <= T; tc++) {
		unsigned char S[200000];
		unsigned char F[100];
		
		vector<int> s;
		bool f[26];
		for(int i = 0; i <26; i++)
			f[i] = false;
		
		scanf("%s", S);
		scanf("%s", F);
		
		int count[26] = {0,};
		int temp = 0;
		while((int)(S[temp]) != 0) {
			s.push_back((int)(S[temp])-97);
			count[s[temp]]++;
			temp++;
		}
		temp = 0;
		while((int)(F[temp]) != 0) {
			f[(int)(F[temp])-97] = true;
			temp++;
		}
		int x[26];
		for(int i = 0; i < 26; i++)
			x[i] = 100;
		for(int i = 0; i < 26; i++) {
			for(int j = 0; j < 26; j++) {
				if(!f[j]) continue;
				if(j < i) {
					if(x[i] > i-j) x[i] = i-j;
				}
				if(j == i) x[i] = 0;
				if(j > i) {
					if(x[i] > j-i) x[i] = j-i;
				}
			}
		}
		unsigned long long result = 0;
		for(int i = 0; i < 26; i++) {
			result += count[i]*x[i];
		}
		printf("Case #%d: %llu\n", tc, result);
	}
}
profile
Hello Everything!

0개의 댓글