C++/BAEKJOON

[C++] BAEKJOON (1157) 단어 공부

sweetnew 2020. 10. 29. 18:52
반응형

문제

알파벳 대소문자로 이루어진 단어가 주어진다.

이 단어에서 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램을 작성하시오.

단, 대문자와 소문자를 구분하지 않는다.

 

첫째 줄에 알파벳 대소문자로 이루어진 단어가 주어진다.

주어진 단어의 길이는 1,000,000을 넘지 않는다.

 

첫째 줄에 이 단어에서 가장 많이 사용된 알파벳을 대문자로 출력한다.

단, 가장 많이 사용된 알파벳이 여러 개 존재하는 경우에는 '?'를 출력한다.

 

풀이

 

#include <iostream>
#include <string>		// std::stirng, string.lenght()
#include <utility>		// std::pair
#include <algorithm>	// std::sort

int main(void) {

	std::string word;
	std::cin >> word;

	std::pair<int, char> alphabet[26];

	for (int i = 0; i < word.length(); ++i) {
		if (word[i] >= 'A' && word[i] <= 'Z') {
			++alphabet[word[i] - 'A'].first;
		}
		else if (word[i] >= 'a' && word[i] <= 'z') {
			++alphabet[word[i] - 'a'].first;
		}
	}

	for (int i = 0; i < 26; ++i) {
		alphabet[i].second = i + 'A';
	}

	std::sort(alphabet, alphabet + 26);

	if (alphabet[25].first == alphabet[24].first) {
		std::cout << "?";
	}
	else {
		std::cout << alphabet[25].second;
	}

	return 0;
}

 

 

 

 

출처: BAEKJOON

반응형