문제설명

 

소스코드

#include<iostream>
using namespace std;
int main() 
{
	int arr[26] = { 0 }; int max = 0; int count = 0; int idx = 0;
	string input;
	cin >> input;
	for (int i = 0; i < input.length(); ++i)
	{
		input[i] = toupper(input[i]); //모두 대문자로 변환
		++arr[input[i] - 65]; //A-65는 0이고, Z-65는 25다
	}
	for (int i = 0; i < 26; ++i) if (arr[i] > max){ max = arr[i]; idx = i; } //가장 많이 사용된 알파벳 검사
	for (int i = 0; i < 26; ++i) if (max == arr[i]) ++count; //가장 많이 사용된 알파벳이 몇개인지 검사
	idx += 65; //idx + 65는 가장 많이 사용한 문자이다.
	if (count > 1) //가장 많이 사용된 알파벳이 2개 이상이면 ? 출력
	{
		cout << "?";
		return 0;
	}
	else cout << (char)idx;
}

 

풀이

  • 입력받은 문자열을 모두 대문자로 바꾼다.
  • 알파벳은 26개이므로 배열 26개를 선언한다.
  • 문자열을 검사하면서 해당하는 문자열의 배열의 값을 증가시킨다.
  • max와 idx에 가장 많이 사용된 배열의 값과 해당 인덱스를 저장한다.
  • 가장 많이 사용된 배열의 값이 2개 이상이면 ?를 출력한다.
toupper()함수는 알파벳을 대문자로 바꿔주는 함수이다.