백준 1157 - 단어 공부

백준 1157 - 단어 공부

https://www.acmicpc.net/problem/1157


풀이

단어가 입력으로 주어졌을 때, 대문자와 소문자는 구분하지 않는 것을 고려해야 하며,

단어에서 가장 많이 쓰인 알파벳을 찾아야 하기에 최댓값을 반복문을 통해 갱신해야 한다.

또한 최대값의 알파벳이 2개 이상일 경우도 구분해 주어야 한다.


코드


✔ 추가 풀이

단어를 입력받을 때, 다음과 같은 방식으로도 해보았다.

string 라이브러리getline() 함수를 사용하여 str 에 저장하고,

for 문 으로 size 만큼 반복해 주었다.

#include <cstring>
...

string str;

getline(cin, str);
size = str.size();
    
for (int i = 0; i < size; ++i) {
    if (str[i] <= 'Z') {
        alphabet[str[i] - 'A']++;
    }
    else {
        alphabet[str[i] - 32 - 'A']++;
    }
}


또한, 쓸데없는 변수의 사용을 줄이고, 코드를 줄일 수 있었다.

for (int i = 0; i < 26; ++i) {
        if (alphabet[i] == max) {
            result = '?';
        }
        else if (alphabet[i] > max) {
            max = alphabet[i];
            result = 'A' + i;
        }
    }
    cout << result;

Categories:

Updated:

Leave a comment