풀이1
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
string s; cin >> s;
vector<char>alphabet = { 'A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z' };
vector<int>check(26);
vector<int> cnt_check(26);
transform(s.begin(), s.end(), s.begin(), ::toupper);
for (int i = 0; i < s.length(); i++) {
for (int k = 0; k < alphabet.size(); k++) {
if (s[i] == alphabet[k]) {
check[k]++;
cnt_check[k]++;
break;
}
}
}
sort(cnt_check.begin(), cnt_check.end(), greater<int>());
if (cnt_check[0] == cnt_check[1]) cout << '?'; //가장 많이 사용된 알파벳이 여러 개 존재하는 경우
else {
int max_index = max_element(check.begin(), check.end()) - check.begin();
cout << alphabet[max_index];
}
}
풀이2
#include <iostream>
#include <string>
#include <map>
using namespace std;
int main() {
ios_base::sync_with_stdio(false);
cin.tie(0);
string s;
cin >> s;
char ans;
map<char, int> m;
bool flag = false; //가장 많이 사된 알파벳이 여러개인 경우를 체크
for (int i = 0; i < s.length(); i++) {
s[i] = toupper(s[i]); //대문자로 변경
m[s[i]]++;
}
int max = 0;
for (auto i = m.begin(); i != m.end(); i++) { //제일 갯수가 많은 알파벳이 몇개인지 검사.
if (max <= i->second) {
max = i->second;
ans = i->first;
}
}
for (auto i = m.begin(); i != m.end(); i++) {
if (i->second == max && ans != i->first) { //갯수가 같은데 다른 알파벳인 경우
flag = true;
break;
}
}
if (flag) cout << "?";
else cout << ans;
}
'Algorithm 🧑🏻💻 > 백준(BOJ)' 카테고리의 다른 글
[백준,c++] 11651번 - 좌표 정렬하기2 (0) | 2021.10.28 |
---|---|
[백준,c++] 11650번 - 좌표 정렬하기 (0) | 2021.10.28 |
[백준,c++] 1159번 - 농구 경기 (0) | 2021.10.28 |
[백준,c++] 11562번 - 백양로 브레이크 (0) | 2021.10.28 |
[백준,c++] 11557번 - Yangjojang of The Year (0) | 2021.10.28 |
[백준,c++] 1152번 - 단어의 개수 (0) | 2021.10.28 |
댓글