/* 알파벳 대소문자로 된 단어가 주어지면, 가장 많이 사용된 알파벳이 무엇인지 알아내는 프로그램 대문자와 소문자를 구문하지 않습니다. 오케이. 일단 입력을 받고 이것을 숫자로 변경해야하는가? 26개 어레이를 만들어서 카운트를 올린다음에 오케이요. 그런데 대문자인지 소문자 인지 어떻게 알 수 있나요. 대문자면 소문자로 변경하도록 해야하는데, 이것이 가능한가요? 찾아보도록 오케이 아스키코드가 65 A 이고 97 이 a 이니까 97보다 크면 소문자입니다. 이것을 대문자로 바꿔주도록 하겠습니다. 97-65 = 32 같은 숫자가 있는지 어떻게 찾아볼 수 있나요? 최대값은 찾을 수 있고, 최대값을 찾은 후에 같은 숫자가 있는지 찾도록 하겠습니다. */ #include <iostream> #include <string> #include <algorithm> using namespace std; string word; int alpha[26] = { 0 }; int index = 0; int maxVal = 0; int cnt = 0; int maxIndex = 0; char ans; void problem_in() { cin >> word; for (int i = 0; i < word.length(); i++) { if (word[i] >= 'a') { // 소문자를 대문자로 변경합니다. word[i] = word[i] - 32; } index = word[i] - 65; alpha[index]++; } } /* maxVal 을 가진 배열을 저장하고 있어야 합니다. maxVal 을 가진 배열을 저장하고 있어야 합니다. */ void solve() { maxVal = alpha[0]; for (int i = 1; i < 26; i++) { if (maxVal < alpha[i]) { maxVal = alpha[i]; maxIndex = i; } } for (int i = 0; i < 26; i++) { if (maxVal == alpha[i]) cnt++; } ans = maxIndex + 65; if (cnt >= 2) cout << "?" << endl; else cout << ans << endl; } int main() { problem_in(); solve(); return 0; } |
대소문자 구문하기 위해서 어떻게 사용했는지, 그리고 문자와 숫자 사이에서 어떻게 변환했는지를 나타냅니다.