문제출처: https://www.acmicpc.net/problem/1296


풀이

간단한 문자열문제입니다. c언어스타일로 오민식이름에서 L,O,V,E의 갯수 + 입력받는 여자의 이름의 L,O,V,E의 갯수를 합하여 계산값이 가장 크면서 사전순으로 앞에있는 여자의 이름을 출력하면 됩니다. 저는 string으로 풀었습니다.  string으로 풀 때는 모두 입력받고 정렬 시킨뒤 계산하는게 편합니다.


코드

#include<iostream>
#include<algorithm>
#include<string>

using namespace std;
int max_value = -1;
string arr[50];
int main()
{
	int n;
	//L,O,V,E
	string a;
	cin >> a >> n;
	int index = 0;
	for (int i = 0; i < n; i++)
	{
		cin >> arr[i];
	}
	sort(arr, arr + n);
	for(int i=0;i<n;i++)
	{
		string temp = "";
		int l=0, o=0, v=0, e=0;
		temp = a + arr[i];
		for (int i = 0; i < temp.size(); i++)
		{
			if (temp[i] == 'L')
				l++;
			else if (temp[i] == 'O')
				o++;
			else if (temp[i] == 'V')
				v++;
			else if (temp[i] == 'E')
				e++;
		}
		if (max_value < ((l + o) * (l + v) * (l + e) * (o + v) * (o + e) * (v + e)) % 100)
		{
			max_value = ((l + o) * (l + v) * (l + e) * (o + v) * (o + e) * (v + e))%100;
			index = i;
		}
	}
	cout << arr[index]<<endl;
}


결과

+ Recent posts