[백준 1157] 단어 공부 (C#, C++) - soo:bak
작성일 :
문제 링크
설명
입력으로 주어지는 문자열에서 가장 많이 등장하는 알파벳을 찾는 문제입니다.
문제의 조건에 따르면 알파벳의 대문자와 소문자를 구분하지 않고 찾아야 하기 때문에,
문자열을 모두 대문자로 변환하거나 소문자로 변환한 후 탐색을 해야 합니다.
Code
[ C# ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
namespace Solution {
class Program {
static void Main(string[] args) {
var word = Console.ReadLine()!;
var cntAlphabets = new int[26];
foreach (var c in word.ToUpper())
cntAlphabets[c - 'A']++;
var cntMax = cntAlphabets.Max();
var freqMax = cntAlphabets.Count(cnt => cnt == cntMax);
if (freqMax > 1) Console.WriteLine("?");
else Console.WriteLine((char)(Array.IndexOf(cntAlphabets, cntMax) + 'A'));
}
}
}
[ C++ ]
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
#include <bits/stdc++.h>
using namespace std;
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
string word; cin >> word;
vector<int> cntAlphabets(26, 0);
for (char c : word) {
c = toupper(c);
cntAlphabets[c - 'A']++;
}
int cntMax = *max_element(cntAlphabets.begin(), cntAlphabets.end());
int freqMax = count(cntAlphabets.begin(), cntAlphabets.end(), cntMax);
if (freqMax > 1) cout << "?\n";
else cout << (char)(max_element(cntAlphabets.begin(), cntAlphabets.end()) -
cntAlphabets.begin() + 'A') << "\n";
return 0;
}